响应者链
我们有没有想过屏幕是如何响应我们的触摸事件的?
我们假设点击了屏幕上的一个label
app是如何确定你点的是哪个view的哪?那么应该由谁来响应你的点击哪?
这就联系到了响应者链
响应者链解决了两个问题:
1 确定是哪个view -- 传递链(递归查找)
2 这个点击事件由谁来做?--响应链
iOS使用hit-Testing通过检查触摸点是否在关联的view边界内,如果在则递归地检查该view的所有子view
传递链:由系统向离用户最近的view传递。UIKit - window - 》root view -> lowest view
响应链:由离用户最近的view向系统传递。initial view - >super view ->...->view controller ->window ->Application
按照正常情况下,子类接收点击事件以后,事件不会主动传递到下一个响应者,因此父类便不会再接收点击事件。如果子类不处理点击事件,则事件会一直传递下去,知道UIApplication
浙公网安备 33010602011771号