iOS中最早的注册触摸事件

时间:2017-08-06 17:34:02

标签: ios swift cocoa-touch uikit uiwindow

重新排列我的UIViews的结构后,我似乎引入了绘图延迟(用户可以用手指在屏幕上绘图)。在绘图开始之前可以忽略不计,但是现在手指的初始移动和线的绘制之间存在明显的等待时间。随着我不断画画,延迟似乎消失了。因此,初始触摸事件可能会在某处延迟。

我的问题不是如何解决这个具体的例子,但在诊断中我遇到了以下问题:我可以注册触摸屏幕的最早点(触发时间)是什么?

现在我在所有UIResponders(UIWindow - > UIView - > ... - > DrawingView)中将时间戳放在hitTest中。但是在UIWindow第一次调用hitTest之前会有延迟吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

UIWindow在将事件直接发送到视图之前向手势识别器提供触摸事件。这发生在-[UIWindow sendEvent:]https://developer.apple.com/documentation/uikit/uiwindow/1621614-sendevent)内。我相信它会对视图层次结构进行测试,以找到可能对该事件感兴趣的手势识别器,因此您不应期望hitTest:withEvent:消息被延迟。

如果您的视图或其任何超视图上有手势识别器,that gesture recognizer can delay the delivery of touch events

请注意,UIKit的许多标准视图都使用手势识别器。特别是,UIScrollView uses gesture recognizers that can delay touch events以及UITableViewUICollectionView都是UIScrollView的子类。