響應者鏈
響應者鏈是一個響應者的連接序列爹殊,事件或者動作消息依次傳遞八酒,它允許響應者把事件處理的職責轉(zhuǎn)交給其他更高層次的對象譬挚。應用程序通過向上傳遞一個事件來查找合適的處理對象锅铅,因為點擊監(jiān)測視圖也是一個響應者對象,應用程序在處理觸摸事件的時候减宣,也可以利用響應者鏈盐须。
由多個響應者組成的鏈
響應者
iOS中所有能響應事件(觸摸,晃動漆腌,遠程事件)的對象都是響應者贼邓。
系統(tǒng)定義了一個抽象的父類UIResponder來表示響應者,其子類都是響應者屉凯。
響應者的檢測事件
硬件檢測到觸摸事件立帖,會將信息交給UIApplication眼溶,開始檢測悠砚。
UIApplication -> window -> viewController -> view -> 檢測所有子類。
最終確認觸碰的位置堂飞,完成響應者鏈的查詢過程灌旧。
處理觸摸事件
檢測到響應者后,實現(xiàn)touchesBegain:withEvent绰筛;等方法枢泰,即處理事件。
如果響應者沒有處理事件铝噩,事件會向下傳遞衡蚂。如果沒有響應者處理,則丟棄觸摸事件骏庸。
事件處理的順序與觸摸檢測查詢檢測的順序相反毛甲。
觸摸的子視圖 -> view -> viewController -> window -> UIApplication。
阻斷響應者鏈
響應者鏈可以被打斷具被,無法完成檢測查詢的過程玻募。
視圖類的屬,userInteractionEnabled一姿,關(guān)閉后能阻斷查詢過程七咧。
文/Joker_King(簡書作者)
原文鏈接:http://www.reibang.com/p/8fbade1041d2
著作權(quán)歸作者所有跃惫,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),并標注“簡書作者”艾栋。