当我的 JavaScript 应用在 iOS 设备上访问时(以及后来的 Android 设备),我希望添加一些多点触控功能。
我想提供一个类似 Shift 键的功能:用户可以用一根手指按住屏幕上的一个按钮,而在这个按钮被按住期间,对于屏幕上其余区域的轻触操作的行为与经典的轻触略有不同。
我遇到的问题是,除非第一只按住 Shift 键的手指发生了 touchmove 事件,否则我收不到轻触手指的任何 touchend 事件。
由于屏幕非常灵敏,touchmove 事件很容易被触发,在大多数情况下一切都正常工作。
但是当用户的手指稍微静止一点时,会导致轻触无法被检测到,直到用户稍微移动手指为止。这会导致轻触与屏幕上出现的动作之间存在变量 "延迟"(如果用户非常冷静,延迟可能会持续几秒钟)。
我的猜想是,这种延迟会导致用户再次轻触屏幕,从而再次触发动作,这正是我不希望发生的事情!
您可以在 iPad/iPhone 上使用此链接进行测试:http://jsfiddle.net/jdeXH/8/
尝试在红色区域上轻触的同时,在青色区域上用手指保持非常静止的状态,使整个页面始终保持绿色。
这种行为是否可以预期?有没有已知的解决方法?我本来期望当手指从屏幕上移开时,touchend 事件会立即被触发。
我使用的 iOS 版本是 5.1.1(iPad1 和 iPhone4S)
编辑:找到一个类似的问题 Multitouch touchEvents not triggered as they should on Safari Mobile