iOS touchstart 和 touchmove 之间有延迟吗?

2024-01-19

我正在尝试将我的网络应用程序转换为移动设备可用的形式。我正在尝试建立对水平滚动等触摸手势的支持。我在我的应用程序中发现一些奇怪的行为。

我通过 touchstart 事件启动手势,然后在 touchmove 上滚动。但是,我的应用程序在接收这两个事件之间存在 500-700 毫秒的延迟。据我所知,我的应用程序在这两个事件之间没有执行其他工作。

其他方面: 代码是用jquery写的,使用

  $(element).bind(touchmove, function(ev) {return myobject.DoTouch(ev) } 

DoTouch 命令只是检查 ev.type,记录触摸位置,然后返回 false。

我应该寻找什么想法来尝试解决这个问题?触摸和获得应用程序响应之间的延迟非常烦人。


是的。事实证明,这就是 iOS 的工作原理。一段时间我都在拔自己的头发。在这里阅读更多内容:http://developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html http://developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html。本质上,如果 iOS 认为它可以将其作为内部 PAN 手势来处理,它就会这样做,甚至不会发送一个touchmove事件根本。

在我的项目中,我发现如果观看者非常刻意地做出触摸移动手势,并在移动结束时抬起手指之前停顿一会儿,那么touchmove事实上,事件是按照人们的预期发送的。因此,记录的行为可能与现实有点不符,这只会增加混乱和我的调试工作。

无论如何,如果 iOS 在内部将事件处理为 PAN 手势,它会发送一个scroll之前的事件touchend。在我的项目中,我能够使用它来设置用于区分拖动手势(通常在我的 touchmove 处理程序中发送)的标志,并忽略独立 touchend 处理程序中与我自己的处理无关的任何行为滚动处理。

我希望这对您(和其他人)也有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS touchstart 和 touchmove 之间有延迟吗? 的相关文章

随机推荐