响应者链

2016-08-05  本文已影响10人  JosephCheng

1> 什么是响应者链

响应者链条是由多个响应者对象连接起来的链条,其中响应者对象是能处理事件的对象,所有的View和ViewController都是响应者对象,利用响应者链条能让多个控件处理同一个触摸事件.

事件响应链。包括点击事件,画面刷新事件等。在视图栈内从上至下,或者从下之上传播. 可以说点事件的分发,传递以及处理。具体可以去看下touch事件这块。

简单的说,  在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。这种有响应和处理事件的对象,我们称之为“响应者对象”。

UIApplication、UIViewController、UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件

2> 响应者链的事件传递机制

如果当前view不能处理当前事件,那么事件将会沿着响应者链(Responder Chain)进行传递,直到遇到能处理该事件的响应者(Responsder Object)。

3> 响应者链的事件传递过程。

(1)如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图

(2)在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理

(3)如果window对象也不处理,则其将事件或消息传递给UIApplication对象

(4)如果UIApplication也不能处理该事件或消息,则将其丢弃

上一篇 下一篇

猜你喜欢

热点阅读