我有一个页面,里面有几个小盒子,当你点击它们的时候,它们会展开/折叠来显示细节。现在,我正在使用touchstart事件处理程序来触发展开/折叠,一切都运行得很好。
我所遇到的唯一问题是,当您试图滑动页面时,如果您第一次触摸的位置恰好在其中一个框内,它将触发展开,而且由于event.preventDefault()是在touchstart事件处理程序中被调用的,因此它阻止用户滚动。我想要发生的是,如果你碰巧碰到它,你就可以滑动滚动,而不需要展开它,在滑动时忽略触屏事件.。
我的第一反应是简单地将展开/折叠功能从touchstart移动到touchend,然后将一个处理程序附加到用于touchmove的框中,然后调用event.stopImmediatePropagation(),这可以防止在开始滚动时触发touchend。然而,这种方法似乎不像触地启动那样具有响应性,因为需要相当长的时间才能触发它,而触地启动是非常快速、响应性强的,而且工作非常出色。
我已经在iPad上做过测试(第4代,在Safari和Chrome中测试过),这是touchend反应不快的地方。我还在Nexus 10 Android平板电脑(Chrome)上进行了测试,而touchend似乎根本没有启动。
有没有人在以下两方面有任何建议: 1)改进我所概述的解决方案的方法,还是2)另一种方法?
发布于 2014-04-08 15:14:10
最近,为了准备一个新项目,我一直在研究触摸事件,我遇到了另一个可能对您有所帮助的Stackoverflow:prevent touchstart when swiping。
https://stackoverflow.com/questions/22866359
复制相似问题