【问题标题】:Sencha Touch App freeze when multitouch / AndroidSencha Touch App 在多点触控/Android 时冻结
【发布时间】:2013-02-20 13:02:36
【问题描述】:

我构建了一个 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) 中的帖子,但这对我不起作用或者我做错了什么。

任何帮助都将不胜感激。

【问题讨论】:

  • Android logcat 通过 PhoneGap 运行时是否显示任何内容?这是否会导致应用程序完全冻结,需要强制退出?我以前见过很多,但它从来没有给我造成任何冻结。
  • 是的,这是错误,logcat 在冻结时显示:“D/CordovaLog(12706): Uncaught TypeError: Cannot read property 'point' of undefined”捏出来,有时我不得不退出应用程序。

标签: android extjs touch freeze pinch


【解决方案1】:


我最近遇到了这个问题,并访问了您提到的 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);
            }
           });

     }



【讨论】:

    猜你喜欢
    • 2014-07-07
    • 1970-01-01
    • 2020-11-13
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多