繁体   English   中英

为什么我的iPad触摸事件被延迟(有时长达一秒)?

[英]Why are my iPad touch events being delayed (sometimes up to a second)?

我正在开发一个游戏,并且正在使用CAEAGLLayer支持的UIView子类来呈现游戏引擎。 触摸处理是通过-touchesBegan:withEvent:等完成的。 人。

一切正常,但很少,除非快速点击屏幕上的控件之一, -touchesBegan:withEvent:不会在0.1到1-2秒之间被调用。 仅在您先快速点击屏幕(4-5次)时,这种情况才会发生20次。 如果我还用另一根手指按住屏幕上的其他控件,则似乎更有可能发生这种情况。

考虑到这与我自己的代码有关,我将UIApplication子类化,因此可以向-sendEvent:添加日志记录语句。 发生-sendEvent:触摸时, -sendEvent:直到触摸开始后的一段时间才被调用,因此UIView子类中的触摸处理代码似乎没有错误。

有谁知道这里发生了什么(除了iOS上有一些晦涩的bug)? 是否存在某种内部“事件队列”,使得事件传递在填满时会变得迟钝? 其他人有没有经历过?

触摸事件仅在主UI运行循环中分派,有时仅在主运行循环空闲一会后才分派。 因此,如果您的应用程序忙于连续处理多个先前的触摸事件而又不中断,则主UI运行循环可能已饱和,因此,直到使用当前内容完成操作之后,才能获得任何其他触摸事件。

触摸事件也有时间戳。 因此,如果您希望应用程序保持最大的响应速度,则可以检查它们是否过快(比事件处理程序和运行的UI更新快),并跳过或组合一些适合于您的应用程序的事件处理程序。 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM