Sencha Touch App 在多点触控/Android 时冻结
Posted
技术标签:
【中文标题】Sencha Touch App 在多点触控/Android 时冻结【英文标题】:Sencha Touch App freeze when multitouch / 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”捏出来,有时我不得不退出应用程序。 【参考方案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);
);
【讨论】:
以上是关于Sencha Touch App 在多点触控/Android 时冻结的主要内容,如果未能解决你的问题,请参考以下文章