響應(yīng)者鏈

1> 什么是響應(yīng)者鏈

響應(yīng)者鏈條是由多個(gè)響應(yīng)者對象連接起來的鏈條,其中響應(yīng)者對象是能處理事件的對象,所有的View和ViewController都是響應(yīng)者對象,利用響應(yīng)者鏈條能讓多個(gè)控件處理同一個(gè)觸摸事件.

事件響應(yīng)鏈。包括點(diǎn)擊事件,畫面刷新事件等。在視圖棧內(nèi)從上至下,或者從下之上傳播. 可以說點(diǎn)事件的分發(fā),傳遞以及處理。具體可以去看下touch事件這塊。

簡單的說, ?在iOS中不是任何對象都能處理事件,只有繼承了UIResponder的對象才能接收并處理事件。這種有響應(yīng)和處理事件的對象,我們稱之為“響應(yīng)者對象”。

UIApplication、UIViewController、UIView都繼承自UIResponder,因此它們都是響應(yīng)者對象,都能夠接收并處理事件

2> 響應(yīng)者鏈的事件傳遞機(jī)制

如果當(dāng)前view不能處理當(dāng)前事件,那么事件將會(huì)沿著響應(yīng)者鏈(Responder Chain)進(jìn)行傳遞,直到遇到能處理該事件的響應(yīng)者(Responsder Object)。

3> 響應(yīng)者鏈的事件傳遞過程。

(1)如果view的控制器存在,就傳遞給控制器;如果控制器不存在,則將其傳遞給它的父視圖

(2)在視圖層次結(jié)構(gòu)的最頂級視圖,如果也不能處理收到的事件或消息,則其將事件或消息傳遞給window對象進(jìn)行處理

(3)如果window對象也不處理,則其將事件或消息傳遞給UIApplication對象

(4)如果UIApplication也不能處理該事件或消息,則將其丟棄

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容