Кордова - событие '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
Кроме того, вот хорошее чтение событий касания: