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”立即触发,但它需要特定数量的像素才能通过,就像触发之前的阈值一样。

就我而言,似乎我必须将手指移动大约半英寸才能触发。有没有办法在没有门槛的情况下让它着火?

我试图在我的应用程序中拖动一个简单的框,但它似乎在识别“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 回答