2012-09-20 52 views
0

QA剛剛提交了一個真正的bug,我正在撓頭如何解決它。Sencha Touch:防止多個併發轉換

如果兩個按鈕(例如,返回和搜索同時按下,每個將調用Ext.dispatch,導致兩個同時反向的轉換!這完全!@#$ s的佈局,使應用程序無法使用。

這對於支持觸摸的應用程序來說確實是一個普遍問題......多個手指在屏幕上盤旋,用戶可能很容易觸發怪異和完全不兼容的動作組合,並且應用程序一次只能接受一個。在Sencha Touch中有沒有辦法妥善處理這種情況?

回答

0

我通過監聽before-dispatch事件修復了這個問題,並且如果有一個派遣已經在進行中,就取消它。

Ext.regApplication(... 
    this._isDispatching = false, 

    launch: function() { 
     Ext.Dispatcher.on('before-dispatch', function() { 
      var me; 
      if (this._isDispatching) 
       return false; 
      else { 
       this._isDispatching = true; 
       me = this; 
       setTimeout(function() { 
        me._isDispatching = false; 
       }, 500); 
       return true; 
      } 
     }, this); 
    } 

是的,500毫秒的延遲肯定是hacky,但我想不出一個更強大的方式來檢測過渡完成。沒有after-dispatch事件,並且dispatch事件在轉換完成之前觸發。

希望這可以幫助別人。