-
響應者鏈條
- 簡介(學了響應者鏈條景描,目的知道誰最終處理事件十办。)
用戶點擊屏幕后產(chǎn)生的一個觸摸事件,經(jīng)過一系列的傳遞過程后超棺,會找到最合適的視圖控件來處理這個事件
找到最合適的視圖控件后向族,就會調用控件的touches方法來作具體的事件處理
-
這些touches方法的默認做法是將事件順著
響應者鏈條
向上傳遞,將事件交給上一個響應者進行處理- touch默認做法:自己不處理事件棠绘,交給上一個響應者處理touch事件件相。
- 響應者鏈條,點擊綠色的view,如果不處理事件氧苍,就會往上傳遞夜矗。
- 驗證touch的默認做法 先恢復所有view的默認做法
- 監(jiān)聽黃色點擊,藍色點擊候引。
- 黃色調用默認做法侯养,事件傳遞給誰處理? 藍色
結論:1. touch的默認做法:自己不處理,交給上一個響應者澄干。2. 上一個響應者默認是父控件
* 兩個view怎么同時處理事件? 一個view處理方法逛揩,在調用父類默認的做法

1.png
- 事件傳遞的完整過程
1> 先將事件對象由上往下傳遞(由父控件傳遞給子控件),找到最合適的控件來處理這個事件麸俘。
2> 調用最合適控件的touches….方法
3> 如果調用了[super touches….];就會將事件順著響應者鏈條往上傳遞辩稽,傳遞給上一個響應者
4> 接著就會調用上一個響應者的touches….方法
響應者鏈的事件傳遞過程
1.如果view的控制器存在,就傳遞給控制器从媚;如果控制器不存在逞泄,則將其傳遞給它的父視圖
2.在視圖層次結構的最頂級視圖,如果也不能處理收到的事件或消息拜效,則其將事件或消息傳遞給window對象進行處理
3.如果window對象也不處理喷众,則其將事件或消息傳遞給UIApplication對象
4.如果UIApplication也不能處理該事件或消息,則將其丟棄如何判斷上一個響應者
1> 如果當前這個view是控制器的view
,那么控制器
就是上一個響應者
2> 如果當前這個view不是控制器的view
,那么父控件
就是上一個響應者