0

私は ST2.2 を使用しており、ユーザーがボタンやリスト項目などを 2 回タップすると 2 つのビューがプッシュされるという修正を適用しました。修正は次のとおりです。

Ext.define('MyApp.view.NavView', {
   extend: 'Ext.navigation.View',

   push: function (view) {
      if(this.getActiveItem().xtype != view.xtype)
         this.callParent(arguments);
      else
         console.warn("Prevented pushing a potentially duplicate view of xtype: " + view.xtype);
   }
});

起動時に初期化された app.js で宣言されたすべてのビューを持っていたとき、これはうまくいきました。それ以来、パフォーマンスを向上させ、DOM サイズを小さくするために、すべてのビューを動的にロードするように切り替えました。つまり、app.js のビューにはメイン ビューだけが含まれていません。他のビューは初期化され、必要に応じてプッシュされます。

上記の修正は機能しなくなり、元の問題に戻りました。

また、MyApp.view.NavView を requires: に含めようとしましたが、app.js のアプリケーションでは成功しませんでした。

4

1 に答える 1

0

ボタンにミューテックスを追加して、ダブルタップハンドラーを防ぐことができます:

//somewhere in controller
tapNextButton: function(btn)
{
    if (btn.mutex) return;
    btn.mutex = true;
    setTimeout(function() {btn.mutex = false;}, TAP_BUFFER_LONG);
            // push new screen here
},

または、ボタン定義またはオーバーライドでタップ リスナーに「buffer」プロパティを使用できます: 'Ext.event.recognizer.SingleTouch' プロジェクト全体

于 2014-04-04T13:34:24.723 に答える