解决方案:https://github.com/alexgibson/tap.js
我在移动Safari中iPad上的"触摸端"one_answers"触摸移动"事件之间存在冲突。我有像画廊一样并排放置的图像,它们有一个"触摸端"事件,在触摸端时可以翻转。然而,您也可以从一个图像滑动到另一个图像(就像在iPhone上将主屏幕滑动到下一个屏幕一样)。
现在,当我想滑动到下一个图像时,我不知道如何防止"触摸端"事件触发。很明显,我不希望图像在滑动时翻转,只希望在轻按时翻转。
到目前为止我的解决方案:
var img = $('.show-video');
var sliding = false;
img.bind('touchend', function(e) {
if (sliding === false){
Animate($(this), 'flip');
}
});
img.bind('touchmove', function(){
sliding = true;
$(this).bind('touchend', function(){
window.setTimeout(function(){
sliding = false;
}, 200)
})
});
````
我认为这可以做得更好。
在敲击屏幕时,基本上有两个事件:touchstart
和touchend
。当用户触摸屏幕时,捕获第一个事件,当他停止触摸屏幕时触发第二个事件。应捕捉touchmove
事件以分析手指的运动。
我不完全确定你想说什么,但我假设你正在捕捉这些事件。你能做的是:
- 与其在
touchstart
上做某事,不如在touchend
上做。无论如何,这更自然,因为你举起手指后应该会发生一些事情 - 在
touchstart
之后,使用touchmove
查看是否有任何移动。如果没有,并且调用了touchend
,请执行您想要执行的敲击操作。如果有运动,做任何你想做的滑动
我希望这能有所帮助。
我曾经对此做过一次变通。
你已经解释了正在发生的事件,你也有了一个问题的线索。
例如,假设你在#galleryOverlay上有你的图库,你的滚动条就在里面
然后你所要做的就是类似的事情
$('#galleryOverlay').bind('touchstart touchmove touchmove',函数(e){e.stopPropagation();})
因此,通过这种方式,您可以将活动保存在画廊内,但可以防止它们在室外发生。
祝好运
这个库添加了一个"点击"事件,您可以使用它来监视"点击"而不是"触摸结束"。
https://github.com/alexgibson/tap.js