###cocoatouch 事件处理流程
apple 文档
传递链和响应链
传递链:由系统向离用户最近的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)对象。
###避开事件处理
UIView不接受触摸事件的三种情况:
1.不接收用户交互
userInteractionEnabled = NO
2.隐藏
hidden = YES
3.透明
alpha = 0.0 ~ 0.01
注意:UIImageView的userInteractionEnabled默认就是NO,
因此UIImageView以及它的子控件默认是不能接收触摸事件的
###事件分类
1、触屏事件(Touch Event)
2、运动事件(Motion Event)
3、远端控制事件(Remote-Control Event)
###响应者链(Responder Chain)
有响应和处理事件能力的对象。响应者链就是由一系列的响应者对象构成的一个层次结构。
如果view是控制器的view,就传递给控制器.
如不是,则将其传递给它的父视图 在视图层次结构的最顶级视图,
如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理
如果window对象也不处理,则其将事件或消息传递给UIApplication对象
如果UIApplication也不能处理该事件或消息,则将其丢弃
来源:oschina
链接:https://my.oschina.net/u/819364/blog/692959