響應者鏈條示意圖
- 響應者鏈條:是由多個響應者對象連接起來的鏈條
- 作用:能很清楚的看見每個響應者之間的聯繫,並且可以讓一個事件多個對象處理。
- 響應者對象:能處理事件的對象
響應者鏈的事件傳遞過程
- 如果view的控制器存在,就傳遞給控制器;如果控制器不存在,則將其傳遞給它的父視圖
- 在視圖層次結構的最頂級視圖,如果也不能處理收到的事件或消息,則其將事件或消息傳遞給window對象進行處理
- 如果window對象也不處理,則其將事件或消息傳遞給UIApplication對象
- 如果UIApplication也不能處理該事件或消息,則將其丟棄
響應者與事件傳遞的過程
- 區別:事件傳遞是從父控件傳到子控件,而響應者正好相反,從子控件往上傳遞
事件傳遞
- 1> 先將事件對象由上往下傳遞(由父控件傳遞給子控件),找到最合適的控件來處理這個事件。
- 2> 調用最合適控件的touches….方法
- 3> 如果調用了[super touches….];就會將事件順着響應者鏈條往上傳遞,傳遞給上一個響應者
- 4> 接着就會調用上一個響應者的touches….方法
如何判斷上一個響應者
- 1> 如果當前這個view是控制器的view,那麼控制器就是上一個響應者
- 2> 如果當前這個view不是控制器的view,那麼父控件就是上一個響應者
- UIWindow可以拿到視圖中所有的控件的點擊事件