ドラッグを使用して div を前後に移動しようとしています。この部分は、div にスクロール可能なコンテンツが含まれるまで正常に機能します。デスクトップではスクロールバーがあるため、これは問題ではありませんが、タッチ デバイスでは問題が発生します。タッチ イベントがドラッグ イベントと競合しているため、コンテンツをスクロールできません。ドラッグが垂直よりも水平かどうかを検出する条件を作成しようとしました..
私の望みは、垂直方向のタッチ インタラクション中のドラッグを防止することでしたが、UI ドラッグ メソッドは引き続き起動し、タッチ イベントをオーバーライドします。タッチ パンチ プラグインを使用して、タッチ デバイスでドラッグ可能にするため、状況が複雑になっている可能性があります。水平方向のドラッグ条件が満たされるまで、UI ドラッグ メソッドが完全に起動しないようにできれば素晴らしいと思います。これで干渉は解消されると思います。
// note the condition inside the drag function
start: function(e){
// get starting point of the drag
startDragX = e.pageX;
startDragY = e.pageY;
},
drag: function(e, ui){
// prevent drag until user has moved 30px horizontally
if (Math.abs(e.pageX - startDragX) < 30){
ui.position.left = 0;
} else {
if (ui.position.left < 0) {
// left drag
ui.position.left = ui.position.left + 30;
} else {
// right drag
ui.position.left = ui.position.left - 30;
}
}
}
問題を示すフィドルを次に示します (タッチ デバイスでテストします): http://jsfiddle.net/jTMxS/2/