iOS 触摸移动了第一次和第二次调用之间的延迟



我的iOS应用程序遇到了一些问题。

我已经使用clock()函数检查了touchesMoved中的时间戳,并使用当前值和先前值之间的差异。第一个事件和第二个事件之间的差异大于其他事件。

你有什么想法吗?

iOS不是一个硬实时操作系统。 通常不期望触摸事件将以固定频率/统一周期传递。你不应该构建你的应用程序来依赖它。 事件通过主线程传递,这可能会被其他处理(绘图等)延迟。

编辑:如果您看到第一次和第二次触摸之间的周期存在巨大差异(相对于后续触摸事件之间的周期),第一步是在Instruments的Profiler模板中运行该应用程序,以查看您是否在主线程上所做的一些工作响应第一次触摸导致延迟。如果延迟是你自己做的,那么解决这个问题是首要任务。

除此之外,您可以尝试使用各种信号处理方法将数据重新采样为统一的周期数据,但问题是,在至少第二个(更有可能是第三个甚至更晚)事件出现之前,这些算法中的任何一个都无法提供第一个重新量化的点,所以如果主要问题是"第二个事件不会像你想要的那样来", 那么这对你没有帮助。

另一个很好的测试:尝试制作一个空的单视图示例应用程序,该应用程序除了记录事件进入时什么都不做 - 如果您在该琐碎的示例应用程序中看到第一次和第二次触摸之间相同的"奇怪"延迟,那么这就是"它是如何"的,您可以停止浪费时间尝试更改操作系统行为并继续使用一些不同的方法/解决方案。

最新更新