The good news is the phone runs a WebKit browser, the bad news is that the phone still sucks. Nonetheless, without much digging a seemingly wonderful framework was brought to my attention from a company I'm familiar with, Sencha, the company behind the Ext-GWT framework.
Sencha Touch is probably the most powerful HTML5 mobile frameworks out today. However with all its greatness it has one shortcoming: Though they state they have Blackberry 6 support, they really only support one Blackberry 6 device, the Torch.
So what happens when you try to access an app built using Sencha Touch on a non-touch Blackberry? It renders well but you can't click anything, making the app just eye candy.
Alas, there is a quick and dirty solution to it.
NOTE: There are two versions of Sencha Touch, the open source (GPLv3) and the paid commercial license. This solution involves modifying the Sencha Touch source. I only show it as a demonstration, use it as-is.
Sencha Touch provides a wrapper for mouse & touch events to support gestures, dragging and touching. This modification involves making Sencha think of the Blackberry as if it were a standalone browser in terms of input. This may not be the best/only/right solution but it's a start.
I looked at the sencha-touch-debug.js file since its detailed and I could understand what was going on.
The three changes that need to be made are:
Line 4763:
Touch: ('ontouchstart' in window) && (!Ext.is.Desktop && !Ext.is.Blackberry),
Line 13964:
if (!Ext.desktop && !Ext.Blackberry) {...}
Line 18217:
if (Ext.is.Desktop || Ext.is.Blackberry) {...}
There you have it.
Hopefully future versions of Sencha Touch will implement support for non-touch Blackberry 6 devices through a much better way than my hack.
This works pretty well for basic interaction. Swipe scrolling is a little... glitchy. So we're going to try to just avoid it altogether on our project. Nevertheless, thanks for this!
ReplyDeleteI'm going to try to look into scrolling in the next week and see what I can do. The issue is, it scrolls on a 'drag' motion instead of browser-based scrolling.
ReplyDeleteGlad it's working out for you.
Thank you! This works great, you're a life saver.
ReplyDeleteHi, which browser version is the minimum required? It does not render fine on my 8520
ReplyDeleteIs the 8520 running BB OS6? From what I can tell it's not. It needs to be running a WebKit browser to support Sencha Touch
ReplyDeleteI see... its OS5.
ReplyDeleteYea, Sencha Touch only works on BB OS6+ (WebKit)
ReplyDeleteI tried something like this a while back and while it let it work on non-touch phones, it stopped working for touch phones. Does this solution work around that?
ReplyDeleteThis fix works fine on both touch and non-touch devices as well as PCs running WebKit
ReplyDeleteI posted this over on FUNKJED too...but if you undo all the things you did to the sencha-touch.js. Look for this line of code:
ReplyDeleteonMouseEvent:function(a){if(!a.isSimulated)
and add !Ext.is.Blackberry like so
onMouseEvent:function(a){if(!a.isSimulated&&!Ext.is.Blackberry)
It should allow for clicking with the trackpad as well as clicking with touch and scrolling with touch.
To fix a scrolling bug in 1.1 with touch you'll also need to look for:
onTouchEnd:function(g){
and stick in if(Ext.is.Blackberry){g.preventDefault()} like so
onTouchEnd:function(g){if(Ext.is.Blackberry){g.preventDefault()}
hi,
ReplyDeleteI'm new in the blackberry development. i created a sencha application and i want to run it on blackberry simulator.
How can i do it? where should i put model view, controller file of sencha project in blackberry phonegap(blackberry webwork )
application.
Can you suggest me how to do?
Hi,
ReplyDeletecan you please help me to implement this in sencha touch 2 ?
It will be very help full.
Thanks.