touch事件发生时,iOS 系统检测touch事件, 调用相应framework生成event,此event被加入到iOS 系统当前的active app事件队列,application object接收到事件,然后UIApplication调用senderEvent分发事件,事件被传递至UIWIndow(大多由keyWindow接收),UIWindow调用hitTest:withEvent: 确定firstResponder:
opaque==0或者hide的view不接收事件
hitTest:WithEvent: 调用过程为
hitTest:withEvent: ===>调用pointInside:withEvent: ===> (point函数返回NO,结束分支,返回nil) // 返回YES ===> (当前view没有subview,hitTest返回self) // 当前view有subviews ===>从subviews的最上层view开始遍历,递归调用hitTest:withEvent:,直到hitTest返回第一个非nil对象 ===>(hitTest:withEvent:)
本文详细介绍了iOS系统中touch事件的分发流程。从iOS系统如何检测touch事件并生成event开始,到event如何被分发至UIWindow并最终到达对应的UIView。深入探讨了hitTest:withEvent:方法的工作原理及其递归调用过程。
2571

被折叠的 条评论
为什么被折叠?



