- 事件響應(yīng)過(guò)和程?
用戶點(diǎn)擊屏幕后產(chǎn)生的一個(gè)觸摸事件,經(jīng)過(guò)一系列的傳遞過(guò)程后,會(huì)找到最合適的視圖控件來(lái)處理這個(gè)事件,
找到最合適的視圖控件后,就會(huì)調(diào)用控件的touches方法來(lái)作具體的事件處理
那這些touches方法的默認(rèn)做法是將事件順著響應(yīng)者鏈條向上傳遞,將事件交給上一個(gè)響應(yīng)者進(jìn)行處理 - 什么是響應(yīng)者鏈條?
是由多個(gè)響應(yīng)者對(duì)象連接起來(lái)的鏈條. - 什么是響應(yīng)者對(duì)象?
繼承了UIResponder對(duì)象我們稱之為響應(yīng)者對(duì)象,也就是能處理事件的對(duì)象 - 事件傳遞與響應(yīng)的完整過(guò)程?
在產(chǎn)生一個(gè)事件時(shí),系統(tǒng)會(huì)將該事件加入到一個(gè)由UIApplication管理的事件隊(duì)列中,
UIApplication會(huì)從事件隊(duì)列中取出最前面的事件,將它傳遞給先發(fā)送事件給應(yīng)用程序的主窗口.
主窗口會(huì)調(diào)用hitTest方法尋找最適合的視圖控件,找到后就會(huì)調(diào)用視圖控件的touches方法來(lái)做具體的事情.
當(dāng)調(diào)用touches方法,它的默認(rèn)做法, 就會(huì)將事件順著響應(yīng)者鏈條往上傳遞,傳遞給上一個(gè)響應(yīng)者,接著就會(huì)調(diào)用上一個(gè)響應(yīng)者的touches方法 - 如何去尋找上一個(gè)響應(yīng)者?
1.如果當(dāng)前的View是控制器的View,那么控制器就是上一個(gè)響應(yīng)者.
2.如果當(dāng)前的View不是控制器的View,那么它的父控件就是上一個(gè)響應(yīng)者.
3.在視圖層次結(jié)構(gòu)的最頂級(jí)視圖,如果也不能處理收到的事件或消息,則其將事件或消息傳遞給window對(duì)象進(jìn)行處理
4.如果window對(duì)象也不處理,則其將事件或消息傳遞給UIApplication對(duì)象
5.如果UIApplication也不能處理該事件或消息,則將其丟棄 - 事件傳遞的完整過(guò)程
1.先將事件對(duì)象由上往下傳遞(由父控件傳遞給子控件),找到最合適的控件來(lái)處理這個(gè)事件。
2.調(diào)用最合適控件的touches….方法
3.如果調(diào)用了[supertouches….];就會(huì)將事件順著響應(yīng)者鏈條往上傳遞,傳遞給上一個(gè)響應(yīng)者
4.接著就會(huì)調(diào)用上一個(gè)響應(yīng)者的touches….方法- 響應(yīng)者鏈條示意圖
圖片 1.png
注意:touches方法的系統(tǒng)默認(rèn)做法,是將事件傳遞給父控件,調(diào)用父控件的touches方法
- 響應(yīng)者鏈條示意圖
事件的響應(yīng)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 本文來(lái)自:http://ios.jobbole.com/84081/ 前言: 按照時(shí)間順序,事件的生命周期是這樣的...
- 史上最詳細(xì)的iOS之事件的傳遞和響應(yīng)機(jī)制-原理篇http://www.lxweimin.com/p/2e074db7...
- 前言: 按照時(shí)間順序,事件的生命周期是這樣的:事件的產(chǎn)生和傳遞(事件如何從父控件傳遞到子控件并尋找到最合適的vie...
- 本文轉(zhuǎn)自文/VV木公子(簡(jiǎn)書(shū)作者) 前言: 按照時(shí)間順序,事件的生命周期是這樣的:事件的產(chǎn)生和傳遞(事件如何從父控...
- 前言:按照時(shí)間順序,事件的生命周期是這樣的:事件的產(chǎn)生和傳遞(事件如何從父控件傳遞到子控件并尋找到最合適的view...