iOS事件傳遞和事件響應(yīng)

UIApplication運(yùn)行著一個(gè)runloop在接受觸摸事件,當(dāng)接收到觸摸后將事件交給keywindow去處理,然后通過(guò)一系列的事件傳遞找到合適的view。
hitTest方法的內(nèi)部流程
1,判斷自己能否接收事件。
2,判斷下點(diǎn)在不在當(dāng)前視圖 pointInside: withEvent: ,如果在,繼續(xù)下一步。
3,從后往前遍歷自己的子控件。
4,如果沒(méi)有比自己合適的子控件,那么這個(gè)最合適的View就是自己返回self。

然后會(huì)調(diào)用touchesBegan方法,向上傳遞給 響應(yīng)者,這就是響應(yīng)者鏈條

響應(yīng)者鏈條

響應(yīng)者鏈條:由多個(gè)響應(yīng)者一起形成的鏈條
作用:能清楚的看到每個(gè)響應(yīng)者的聯(lián)系,同時(shí)可以讓一個(gè)事件多個(gè)對(duì)象處理。
響應(yīng)者對(duì)象:能處理事件的對(duì)象。

如何判斷上一個(gè)響應(yīng)者:
如果view是控制器view,那么控制器就是上一個(gè)響應(yīng)者,否則父控件就是上一個(gè)響應(yīng)者,如果一直找不到響應(yīng)者會(huì)最終會(huì)到AppDelegate,如果AppDelegate內(nèi)沒(méi)有實(shí)現(xiàn)該事件方法,將會(huì)崩潰。

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

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

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