【响应链】cocoatouch事件处理流程深刻解析

###cocoatouch 事件处理流程html

apple 文档ios

传递链和响应链app

传递链:由系统向离用户最近的view传递。UIKit –> active app’s event queue –> window –> root view –>……–>lowest view
响应链:由离用户最近的view向系统传递。initial view –> super view –> …..–> view controller –> window –> Application
在IOS中,由响应者链来对事件进行响应,全部事件响应的类都是UIResponder的子类.
用户触摸屏幕的地方。事件将沿着响应者链一直向下传递,直到被接受并作出处理。
通常来讲,第一响应者是个视图对象或者其子类对象,当其被触摸后事件被交由它处理,
若是它不处理,事件就会被传递给它的视图控制器对象viewcontroller(若是存在),
而后是它的父视图(superview)对象。

事件响应链

###避开事件处理ui

UIView不接受触摸事件的三种状况:

1.不接收用户交互
userInteractionEnabled = NO

2.隐藏
hidden = YES

3.透明
alpha = 0.0 ~ 0.01
注意:UIImageView的userInteractionEnabled默认就是NO,
所以UIImageView以及它的子控件默认是不能接收触摸事件的

###事件分类code

一、触屏事件(Touch Event)

二、运动事件(Motion Event)

三、远端控制事件(Remote-Control Event)

###响应者链(Responder Chain)htm

有响应和处理事件能力的对象。响应者链就是由一系列的响应者对象构成的一个层次结构。

响应流程

若是view是控制器的view,就传递给控制器.
如不是,则将其传递给它的父视图 在视图层次结构的最顶级视图,
若是也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理 
若是window对象也不处理,则其将事件或消息传递给UIApplication对象 
若是UIApplication也不能处理该事件或消息,则将其丢弃
相关文章
相关标签/搜索