【響應鏈】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也不能處理該事件或消息,則將其丟棄
相關文章
相關標籤/搜索