在导航视图中双击快速点击Sencha Touch 2中的按钮,某些Android设备会在视图堆栈上两次推送新视图,如何解决?不会发生在iPhone上
答案 0 :(得分:2)
如果单击时出现问题,请将事件函数包装在延迟任务中...例如:
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毫秒后调用你需要的任何函数...希望这是有道理的,它也是一种在按钮上创建双击事件的方法......
答案 1 :(得分:0)
这个问题有点旧,但我在我公司正在开发的应用程序中遇到了同样的问题。当按钮绑定到Ajax调用时,这尤其令人沮丧。
我收回了Jeff Wooden的解决方案来覆盖我的应用中的每个按钮:
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");
}
}
});
它是如何运作的?
要使用它,只需将其添加到您的app.js'要求'块
中 Ext.application({
requires: [
...
'MyApp.override.CustomButton',
...
],
有用的资料来源: