重新排列我的UIViews的结构后,我似乎引入了绘图延迟(用户可以用手指在屏幕上绘图)。在绘图开始之前可以忽略不计,但是现在手指的初始移动和线的绘制之间存在明显的等待时间。随着我不断画画,延迟似乎消失了。因此,初始触摸事件可能会在某处延迟。
我的问题不是如何解决这个具体的例子,但在诊断中我遇到了以下问题:我可以注册触摸屏幕的最早点(触发时间)是什么?
现在我在所有UIResponders(UIWindow - > UIView - > ... - > DrawingView)中将时间戳放在hitTest中。但是在UIWindow第一次调用hitTest之前会有延迟吗?
谢谢!
答案 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以及UITableView
和UICollectionView
都是UIScrollView
的子类。