0

問題: タッチ時にマウスの動きが常に感知されるとは限りません。

現在、jQuery UI ドラッグと jQuery Touch Punch を使用して、タッチ イベントをマウス イベントに変換しています。デスクトップブラウザではすべて正常に動作します。

ドラッグ可能な「開始」機能を実行させることはできますが、常にドラッグ可能な「ドラッグ」機能を開始するとは限りません。何が起こっているのかを確認するためにどこにでもリスナーを設定しましたが、開始関数が実行された後、ウィンドウと親ドキュメントの両方でマウスの動きが表示されません。スクロールしてからオンにします (これは通常 preventDefault(); によって防止されます)。ドラッグを続けるには、指を離して元に戻す必要があります。ただし、特定の e.preventDefault() を配置すると、ドラッグ可能な操作を開始してから 3 回目または 4 回目までに、ドラッグを正常に動作させることができます (つまり、最初のスワイプで開始します)。

要約版は次のとおりです。

$(window).mousedown(function(e){
  drag(e);
});

function drag(e){
  $iframefix.show();
  $draggable.draggable({
     start: function(e, ui){
            // this function runs well, but at the end of it, I don't seem to register
            // any mouse movements in the document or window as I move my finger 
            // around, and even using .trigger('mousemove') does not register an event.
     },
     drag: function(e, ui){

     }
  });
  $draggable.trigger(e); 
}

私の推測では、マウス イベントが iframe で発生し、.trigger() が使用されると、おそらく jQuery がイベントを正規化して、ウィンドウ (e.originalEvent) を調べているという事実に関係していると思います。これは、jQuery タッチ パンチがマウスの動きを感知するのを混乱させているのかもしれません (代わりにクリックと認識しているのかもしれません)。

これは jQuery Touch Punch です。これは、jQuery マウス イベントをラップする小さなスクリプトです。

https://raw.github.com/furf/jquery-ui-touch-punch/master/jquery.ui.touch-punch.js

あるいは、おそらくこれは e.preventDefault() または e.stopPropagation の使用であるか、私が見ていない領域で false を返します。

とにかく、ドラッグスタート後に指が動き回るのを感知するのを何かが妨げています。

4

0 に答える 0