javascript - 如何防止用户移动手指滑动元素时触发 'touched' 事件

标签 javascript ios ipad web-applications

解决方案:https://github.com/alexgibson/tap.js

我在移动版 Safari 中的 iPad 上发生“touchend”和“touchmove”事件之间的冲突。我有像画廊一样并排放置的图像,并且它们有一个“touchend”事件附加在触摸结束时翻转。但是,您也可以从一个图像滑动到另一个图像(就像在 iPhone 上滑动主屏幕到下一个屏幕)。

现在我不知道如何在我想滑动到下一张图片时阻止“touchend”事件触发。显然,我不希望图像在滑动时翻转,只有在我点击时才会翻转。

到目前为止我的解决方案:

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)
    })
});

````

我认为这可以做得更好。

最佳答案

点击屏幕时基本上有两个事件:touchstarttouchend。当用户触摸屏幕时,第一个事件被捕获,当他停止触摸屏幕时,第二个事件被触发。应捕获 touchmove 事件以分析手指的移动。

我不完全确定你想说什么,但我假设你正在捕捉那些事件。你可以做的是:

  1. 不要在 touchstart 上做某事,而是在 touchend 上做。无论如何,这更自然,因为在您抬起手指后应该会发生一些事情
  2. touchstart 之后使用 touchmove 查看是否有任何移动。如果 none 和 touchend 被调用,做你想做的点击。如果有运动,请为滑动做任何您想做的事情。

希望对您有所帮助。

关于javascript - 如何防止用户移动手指滑动元素时触发 'touched' 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088287/

相关文章:

objective-c - 通过 UISplitViewController 的 iOS 7 导航栏显示褪色的灰色 View

javascript - 捕获 Promise 错误的最佳方法是什么?为什么?

ios - swift/Xcode6 : Are PDF images working with UIImage(named:)?

iphone - 向 ScrollView 添加标签

objective-c - 可旋转的UIButton

iphone - Iphone 中的股票图表?

ios - 无法在 iPad 中实现 UISlider for Accessibility 选项

javascript - 当虚拟键盘弹出时,如何在 iOS 浏览器上重新定位 View ?

javascript - 替换 jQuery 中的类

javascript - 如何修复 Wkhtmltopdf 不正确的页数