響應者鏈
- 響應者鏈是一個響應者的連接序列,事件或者動作消息依次傳遞,它允許響應者把事件處理的職責轉(zhuǎn)交給其他更高層次的對象。應用程序通過向上傳遞一個事件來查找合適的處理對象,因為點擊監(jiān)測視圖也是一個響應者對象,應用程序在處理觸摸事件的時候,也可以利用響應者鏈。
- 由多個響應者組成的鏈
響應者
- iOS中所有能響應事件(觸摸,晃動,遠程事件)的對象都是響應者。
- 系統(tǒng)定義了一個抽象的父類UIResponder來表示響應者,其子類都是響應者。
響應者的檢測事件
- 硬件檢測到觸摸事件,會將信息交給UIApplication,開始檢測。
- UIApplication -> window -> viewController -> view -> 檢測所有子類。
- 最終確認觸碰的位置,完成響應者鏈的查詢過程。
處理觸摸事件
- 檢測到響應者后,實現(xiàn)touchesBegain:withEvent;等方法,即處理事件。
- 如果響應者沒有處理事件,事件會向下傳遞。如果沒有響應者處理,則丟棄觸摸事件。
- 事件處理的順序與觸摸檢測查詢檢測的順序相反。
- 觸摸的子視圖 -> view -> viewController -> window -> UIApplication。
阻斷響應者鏈
- 響應者鏈可以被打斷,無法完成檢測查詢的過程。
- 視圖類的屬,userInteractionEnabled,關閉后能阻斷查詢過程。