Hammer.js和jQuery中如何检测触摸事件何时结束

3
在 Hammer.js 2.02 中,如何检测按压手势结束?
我在一个元素上使用了一个时间为1的“press”识别器,在按下事件开始时打印一条消息。但是,如何检查用户何时将手指抬起?目前我正在使用“pressup”识别器,它几乎可以工作,但只有当用户按下超过500毫秒时才会触发。如何检查较短的按压手势是否结束?
var pressOptions = {
    event: 'press',
    pointer: 1,
    threshold: 5,
    time: 1
};

var trackpadRight = $('#trackpad-right').hammer();
trackpadRight.data("hammer").get('press').set(pressOptions);

trackpadRight.bind('press', function(ev) {
    console.log("PRESSS DOWN");
});

trackpadRight.bind('pressup', function(ev) {
    console.log("PRESS UP");
});
2个回答

4

不需要使用jQuery,直接使用Hammer即可。

var pressOptions = {
    // event: 'press', //no need to pass defaults
    // pointer: 1,
    // threshold: 5,
    time: 1
};

var trackpadRightTouch = new Hammer(document.getElementById('trackpad-right'));
trackpadRightTouch.get('press').set(pressOptions);

trackpadRightTouch.on('press', function(ev) {
    console.log("PRESSS DOWN");
});

trackpadRightTouch.on('pressup', function(ev) {
    console.log("PRESS UP");
});

这应该可以工作。


1
实际上,如果您在释放之前拖动手指一点,pressup不会触发(hammver v2.0.4)。 - gregtzar
这就是阈值的作用。您可以更改它以进行处理。 - RandallB
就我个人的经验而言,FWIW中的pressup不会听取“时间”这个参数。对于常规的“press”事件,它可以很好地设置。 - RandallB

1

从您的评论中,我认为您需要检测触摸释放。如果是的话,您可以直接将默认的“touchend”事件绑定到元素上,如下所示:

$('#trackpad-right').bind('touchend', function(ev) {
    console.log("PRESS UP");
});

是的,首先使用hammerjs将“press”与{time: 1}属性绑定,然后使用jquery绑定touchend和mouseup以停止。 - jmp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接