Sencha touch 2 双击应用程序内的按钮可能会导致UI损坏
在Sencha Touch 2中,当在某些Android设备上拥有导航视图时,快速双击按钮会在视图堆栈上推两次新视图,如何解决?iPhone上不会发生这种情况如果您在单击时遇到问题,请将事件函数包装在延迟的任务中。。。例如:Sencha touch 2 双击应用程序内的按钮可能会导致UI损坏,sencha-touch-2,Sencha Touch 2,在Sencha Touch 2中,当在某些Android设备上拥有导航视图时,快速双击按钮会在视图堆栈上推两次新视图,如何解决?iPhone上不会发生这种情况如果您在单击时遇到问题,请将事件函数包装在延迟的任务中。。。例如: tap: function(button, e, eOpts) { if(this.delayedTask == null){ this.delayedTask = Ext.create('Ext.util.DelayedTa
tap: function(button, e, eOpts) {
if(this.delayedTask == null){
this.delayedTask = Ext.create('Ext.util.DelayedTask', function() {
this.myFunctionToCall();
this.delayedTask = null;
}, this);
this.delayedTask.delay(500);
}
}
因此,在上面的示例中,如果注册了另一个tap,并且this.delayedTask尚未为null,那么它将不会创建新的延迟任务,该任务最终会在500毫秒后调用您需要的任何函数。。。希望这有意义,这也是一种在按钮上创建双击事件的方法…这个问题有点老了,但我在公司开发的应用程序中遇到了同样的问题。当按钮绑定到Ajax调用时,这尤其令人沮丧 我收回了Jeff Woodon的解决方案来覆盖我应用程序中的每个按钮:
Ext.define('MyApp.override.CustomButton', {
override : 'Ext.Button',
doTap: function(me, e) {
if(this.delayedTask == null){
this.callOverridden(arguments);
this.delayedTask = Ext.create('Ext.util.DelayedTask', function() {
this.delayedTask = null;
}, this);
this.delayedTask.delay(500);
} else {
console.log("Preventing double tap");
}
}
});
它是如何工作的
- 每个按钮动作将触发一个延迟任务,该任务将拦截按钮动作500毫秒,从而防止双击
- 这将适用于“tap”和“handler:”,它们都通过“doTap”方法传递
- 它链接到当前按钮,因此不会在其他按钮上产生回响
Ext.application({
requires: [
...
'MyApp.override.CustomButton',
...
],
资料来源:
- 本帖