Ios 为什么我的iPad touch事件会被延迟(有时长达一秒钟)?

Ios 为什么我的iPad touch事件会被延迟(有时长达一秒钟)?,ios,ipad,touch,Ios,Ipad,Touch,我正在开发一个游戏,我正在使用caeaglayerbackedUIView子类来展示游戏引擎。使用-touchesbeated:withEvent:等完成触摸处理 一切正常,但很少情况下,如果快速点击屏幕上的某个控件,-touchesbeated:withEvent:在0.1到1-2秒之间不会被调用。这种情况可能会发生20次中的一次,并且只有在您首先快速点击屏幕(4-5次)的情况下才会发生。如果我同时在屏幕上的另一个控件上按住另一个手指,则更可能发生这种情况 考虑到这与我自己的代码有关,我将UI

我正在开发一个游戏,我正在使用
caeaglayer
backed
UIView
子类来展示游戏引擎。使用
-touchesbeated:withEvent:
等完成触摸处理

一切正常,但很少情况下,如果快速点击屏幕上的某个控件,
-touchesbeated:withEvent:
在0.1到1-2秒之间不会被调用。这种情况可能会发生20次中的一次,并且只有在您首先快速点击屏幕(4-5次)的情况下才会发生。如果我同时在屏幕上的另一个控件上按住另一个手指,则更可能发生这种情况

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


有人知道这里发生了什么吗(除了iOS有一些模糊的bug)?是否存在某种内部“事件队列”,使得事件交付在填满时变得滞后?还有其他人经历过这种情况吗?

触摸事件仅在主UI运行循环中调度,有时仅在主运行循环空闲一段时间时调度。因此,如果你的应用程序连续忙于处理几个以前的触摸事件而没有休息,那么主UI运行循环可能会饱和,因此在处理完当前内容之前,不会获得任何进一步的触摸事件


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

您是否在所有这些方面都使用
uigestureRecognitors
?或者只是原始的
触摸开始:withEvent:
等?当我要求手势识别器在开火前失败时,我也遇到了同样的情况。我没有使用或添加任何
UIGestureRecognitor
s,这都是
-触摸开始:withEvent:
<代码>[UIApplication sendEvent:]本身正在被延迟,这比我的触摸处理代码低得多。看起来是一些更基本的原因导致了这个问题;你能描述并确定你没有在main上进行密集操作吗?若触摸事件的计时非常重要,那个么我建议只在main上绘制UI。