2

最初のサポート情報: 現在、iOS facebook アプリに似たタッチスクリーン ナビゲーションを作成しています。画面から 1 つの div をスライドさせる必要があります (ほぼ完全に)。このために、jqueryUI ドラッグ可能を使用しています。私の問題は、divがスライドされたときに発生しますが、ユーザーは水平方向にスライドし続けます(divが奇妙な場所に移動する可能性があります)。そのため、すべての種類の水平スクロールを完全に無効にするスクリプトを作成することにしました (CSS overflox-x:hidden は役に立ちません)。

私の考えは、X 軸と Y 軸で指の速度を比較することです。以下の私のコードを見ることができます。これは、純粋に水平スクロールになるとうまく機能しますが、斜めの動きをすると壊れます。どこでもスクロールを完全に無効にすることなく、この斜めのスクロールをブロックする方法について、誰もがアイデアを持っています。

var t1,sX,sY;//vars for the initial touch start time and position

$(window).bind('touchstart',function(e){
    dateX = new Date();//time at start
    t1 = dateX.getTime();

    sX = event.changedTouches[0].clientX;//starting x coordinates
    sY = event.changedTouches[0].clientY;//starting y coordinates
});

$(window).bind('touchmove',function(e){
    dateX = new Date();//get current x time
    var t2 = dateX.getTime();

    var T = t2 - t1;//substract initial from it

    var s1X = Math.abs( event.changedTouches[0].clientX - sX);//get current x coordinates and substract initial from them
    var s1Y = Math.abs( event.changedTouches[0].clientY - sY);//get current y coordinates and substract initial from them

//speed of finger in px/ms
     var X=Math.abs(s1X/T);
     var Y=Math.abs(s1Y/T);

//absolute value of the speeds and if moving horizontally, dont scroll

if(X>Y){
    e.preventDefault();
}
});
4

0 に答える 0