Кордова - событие 'touchmove' не запускается сразу

У меня есть этот простой код:

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" срабатывать сразу, но для прохождения требуется определенное количество пикселей, например, порог, прежде чем оно сработает.

В моем случае кажется, что я должен двигать пальцем примерно на полдюйма, прежде чем он выстрелит. Есть ли способ сделать это огонь без порога?

Я пытаюсь перетащить простую рамку в свое приложение, но кажется, что она проверяет различные события, прежде чем распознает "движение пальцем" и делает его уродливым из-за задержки.

Это вопрос расстояния, а не времени.

1 ответ

Решение

Я смог решить эту проблему, добавив:

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/

Другие вопросы по тегам