1

私はこの簡単なコードを持っています:

document.addEventListener('touchmove', onDocumentTouchMove, false);

function onDocumentTouchMove(event)
{
    for(var i = 0; i < event.touches.length; i++)
    {
        clickX[i] = event.touches[i].pageX;
        clickY[i] = event.touches[i].pageY;
    }
}

私がやろうとしているのは、イベント「touchmove」をすぐに発生させることですが、発生する前にしきい値のように、特定の量のピクセルを渡す必要があります。

私の場合、発火する前に指を約 0.5 インチ動かさなければならないようです。しきい値を持たずに発火させる方法はありますか?

アプリで単純なボックスをドラッグしようとしていますが、「touchmove」を認識する前にさまざまなイベントをチェックしているようで、遅延のために見苦しくなります。

これは時間の問題ではなく、距離の問題です。

4

1 に答える 1

2

以下を追加することでこれを解決できました:

event.preventDefault();

私の関数内:

onDocumentTouchStart (他のイベントの発生の遅延を防ぎます)

onDocumentTouchMove (スクロールを防止)

document.addEventListener('touchstart', onDocumentTouchMove, false);
document.addEventListener('touchmove', onDocumentTouchMove, false);

function onDocumentTouchStart(event)
{
    event.preventDefault(); //Allows firing of other events asap
    for(var i = 0; i < event.touches.length; i++)
    {
        clickX[i] = event.touches[i].pageX;
        clickY[i] = event.touches[i].pageY;
    }
}
function onDocumentTouchMove(event)
{
    event.preventDefault(); //Prevents Scrolling
    for(var i = 0; i < event.touches.length; i++)
    {
        clickX[i] = event.touches[i].pageX;
        clickY[i] = event.touches[i].pageY;
    }
}

何ヶ月もこの問題を抱えていました!今では、すべてのアプリで美しく動作します! :D

また、タッチイベントに関する読み物は次のとおりです。

https://www.w3.org/TR/touch-events/#dfn-touchmove

于 2016-02-25T07:37:18.253 に答える