###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也不能處理該事件或消息,則將其丟棄