响应者链条-(What is responder chain)
事件响应链。包括点击事件,画面刷新事件等。在视图栈内从上至下,或者从下之上传播. 可以说点事件的分发,传递以及处理。具体可以去看下touch事件这块。
1> 首先解释响应者链的概念
UIResponder类,是UIKIT中一个用于处理事件响应的基类。窗口上的所有事件触发,都由该类响应(即事件处理入口)。所以,窗口上的 View及控制器都是派生于该类的,例如UIView、UIViewController等。调用UIResponder类提供的方法或属性,我们就可以捕捉到窗口上的所有响应事件,并进行处理。
响应者链条是由多个响应者对象连接起来的链条,其中响应者对象是能处理事件的对象,所有的View和ViewController都是响应者对象,利用响应者链条能让多个控件处理同一个触摸事件.
2> 事件传递机制
如果当前view不能处理当前事件,那么事件将会沿着响应者链(Responder Chain)进行传递,知道遇到能处理该事件的响应者(Responsder Object)。
1) 接收事件的initial view如果不能处理该事件并且她不是顶层的View,则事件会往它的父View进行传递。
2).initial view的父View获取事件后如果仍不能处理,则继续往上传递,循环这个过程。如果顶层的View还是不能处理这个事件的话,则会将事件传递给它们的ViewController,
3). 如果ViewController也不能处理,则传递给Window(UIWindow),此时Window不能处理的话就将事件传递UIApplication,最后如果连Application也不能处理,则废弃该事件