響應(yīng)者鏈
響應(yīng)者鏈?zhǔn)且粋€(gè)響應(yīng)者的連接序列寨典,事件或者動(dòng)作消息依次傳遞,它允許響應(yīng)者把事件處理的職責(zé)轉(zhuǎn)交給其他更高層次的對(duì)象狈癞。應(yīng)用程序通過向上傳遞一個(gè)事件來查找合適的處理對(duì)象挠乳,因?yàn)辄c(diǎn)擊監(jiān)測視圖也是一個(gè)響應(yīng)者對(duì)象,應(yīng)用程序在處理觸摸事件的時(shí)候,也可以利用響應(yīng)者鏈。
由多個(gè)響應(yīng)者組成的鏈
響應(yīng)者
iOS中所有能響應(yīng)事件(觸摸,晃動(dòng)治拿,遠(yuǎn)程事件)的對(duì)象都是響應(yīng)者。
系統(tǒng)定義了一個(gè)抽象的父類UIResponder來表示響應(yīng)者笆焰,其子類都是響應(yīng)者劫谅。
響應(yīng)者的檢測事件
硬件檢測到觸摸事件,會(huì)將信息交給UIApplication嚷掠,開始檢測捏检。
UIApplication -> window -> viewController -> view -> 檢測所有子類。
最終確認(rèn)觸碰的位置不皆,完成響應(yīng)者鏈的查詢過程贯城。
處理觸摸事件
檢測到響應(yīng)者后,實(shí)現(xiàn)touchesBegain:withEvent霹娄;等方法能犯,即處理事件。
如果響應(yīng)者沒有處理事件犬耻,事件會(huì)向下傳遞踩晶。如果沒有響應(yīng)者處理,則丟棄觸摸事件枕磁。
事件處理的順序與觸摸檢測查詢檢測的順序相反渡蜻。
觸摸的子視圖 -> view -> viewController -> window -> UIApplication。
阻斷響應(yīng)者鏈
響應(yīng)者鏈可以被打斷,無法完成檢測查詢的過程茸苇。
視圖類的屬排苍,userInteractionEnabled,關(guān)閉后能阻斷查詢過程学密。
原文鏈接:http://www.reibang.com/p/0fcd58abd31f
更詳細(xì)內(nèi)容推薦:http://www.reibang.com/p/09ea3fff3ffd