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也不能處理該事件或消息,則將其丟棄