1

我构建了一个 sencha touch (2.1.0) 应用程序并在我的三星 Galaxy S2 (Android 4.0.3) 上对其进行了测试。一旦我使用 snecha cmd 的本机构建命令和另一个我用 phonegap 包装它。当我用两根手指同时触摸屏幕时,我两次都卡住了。我无法再按按钮或滚动。

有没有人解决这个问题?

我还阅读了 Sencha 论坛(http://www.sencha.com/forum/showthread.php?249581-Multi-touch-and-phonegap)中的帖子,但这对我不起作用或者我正在做某事错误的。

任何帮助都是不言而喻的。

4

1 回答 1

0


我最近遇到了这个问题,并访问了您提到的 Sencha 论坛链接,并在我的代码中实现了它,实现了以下目标。
1.与修复合并的应用程序将永远不会冻结同时点击。
2. 在您之前同时点击两个或更多点之后,您将不得不再次点击屏幕上的某个位置。

注意:这个问题只能在 android 4.0.x 和 Sencha 2.1 上重现。

非常感谢 Sencha 论坛的 TROELS
在您的 app.js 中,将 if 条件放在您的 Ext.application 之外,如下所示


Ext.application({
    name:xyz
    requires:[abc]
    //other stuffs
    });

    if(Ext.os.is.Android && Ext.os.version.equals(4.0)) {

        Ext.define('app.overrides.TouchGesture', {
            override: 'Ext.event.publisher.TouchGesture',

            reset: function(e){
                if(Ext.os.version.equals(4.0) && this.currentTouchesCount > 0){
                    e.changedTouches = Ext.Object.getValues(this.currentTouches);
                    this.onTouchEnd(e);
                }
            }
        });


            window.orgPinchEndMethod = Ext.event.recognizer.Pinch.prototype.end;
            Ext.define('app.overrides.Pinch', {
            override: 'Ext.event.recognizer.Pinch',

            end: function(e){
            var wasTracking = this.isTracking,
            result = window.orgPinchEndMethod.apply(this, arguments);
            if(wasTracking){
                this._resetDetection(e);
            }
            return result;
        },

            _resetDetection: function(e){
                var tg = Ext.event.Dispatcher.getInstance().getPublishers().touchGesture;
                setTimeout(function(){
                    tg.reset(e);
                }, 0);
            }
           });

     }



于 2013-06-12T10:19:50.323 回答