Sencha touch 2 双击应用程序内的按钮可能会导致UI损坏

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

在Sencha Touch 2中,当在某些Android设备上拥有导航视图时,快速双击按钮会在视图堆栈上推两次新视图,如何解决?iPhone上不会发生这种情况

如果您在单击时遇到问题,请将事件函数包装在延迟的任务中。。。例如:

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”方法传递
  • 它链接到当前按钮,因此不会在其他按钮上产生回响
要使用它,只需将其添加到app.js“requires”块中即可

        Ext.application({
        requires: [
            ...
            'MyApp.override.CustomButton',
            ...
             ],
资料来源:

  • 本帖

是的,我注意到了这个问题。在chrome浏览器中,同样的问题也会重复。