问题描述
我正在尝试将我的Web应用程序转换为移动设备可用的表单。我正在尝试内置对触摸手势的支持,比如水平滚动。我在我的应用程序中发现一些奇怪的行为。
我用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。本质上,如果iOS认为它可以将其作为内部摇摄手势来处理,它就会这样做,甚至根本不会费心发送touchmove
事件。
在我的项目中,我发现如果查看者非常故意地做出TouchMove手势,并且在移动结束时在举起手指之前稍作停顿,那么touchmove
事件实际上会像人们预期的那样被发送。因此,记录下来的行为可能与现实有点不相符,这只会增加念力和我的调试工作。
无论如何,如果iOS在内部将事件作为平移手势处理,它将在touchend
之前发送scroll
事件。在我的项目中,我能够使用它来设置我用来区分拖动手势(通常在我的TouchMove处理程序中发送)的标志,并忽略独立触摸端处理程序中与我自己的滚动处理处理无关的任何行为。
我希望这对您(和其他人)也有帮助!
这篇关于在TouchStart和TouchMove之间的iOS延迟吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!