在Android上,当检测到滚动事件时,会触发touchcancel事件,这会阻止在滚动发生后触发触摸。为了防止touchcancel被触发,我在滚动div上使用touchDeart上的preventDefault。现在的问题是,我需要让touchUp和滚动发生,以便我的手势检测功能正常工作,并且滚动工作:/
这可行吗?
答案 0 :(得分:0)
touchmove
中阻止默认值,否则 Touchcancel将始终被触发,因为浏览器必须立即控制平移和缩放操作。您最好的选择是相应地使用touch-action
CSS属性切换到指针事件界面,这样可以提供更多控制权,因为pointermove
可以避免pointercancel
,具体取决于您的touch-action
CSS属性应用于相关对象。
触摸点中断时会触发touchcancel事件 以特定于实现的方式(例如,触摸太多 点数已创建)。
使用指针事件时,touch-action: pan-y
将允许浏览器执行常规垂直滚动,并且在执行手势时不会触发pointercancel
(touchcancel
等效物)垂直即可。 Touch-action: none
相当于调用event.preventDefault()
,因为它既不会滚动也不会缩放,也不会应用任何默认的浏览器操作。
当浏览器确定时,会触发pointercancel事件 不太可能有更多的指针事件,或者如果之后 指针向下事件被触发,然后指针被用来操纵 通过平移,缩放或滚动视口。
查看使用触控和指针界面处理水平滑动事件的this jQuery plugin,并更详细地解释它们之间的差异。