07-事件響應(yīng)
用戶點擊屏幕后產(chǎn)生的一個觸摸事件篮条,經(jīng)過一系列的傳遞過程后,會找到最合適的視圖控件來處理這個事件,
找到最合適的視圖控件后,就會調(diào)用控件的touches方法來作具體的事件處理
那這些touches方法的默認做法是將事件順著響應(yīng)者鏈條向上傳遞毁欣,將事件交給上一個響應(yīng)者進行處理
什么是響應(yīng)者鏈條?
是由多個響應(yīng)者對象連接起來的鏈條.
什么是響應(yīng)者對象?
繼承了UIResponder對象我們稱之為響應(yīng)者對象,也就是能處理事件的對象
事件傳遞的完整過程?
在產(chǎn)生一個事件時,系統(tǒng)會將該事件加入到一個由UIApplication管理的事件隊列中,
UIApplication會從事件隊列中取出最前面的事件,將它傳遞給先發(fā)送事件給應(yīng)用程序的主窗口.
主窗口會調(diào)用hitTest方法尋找最適合的視圖控件,找到后就會調(diào)用視圖控件的touches方法來做具體的事情.
當調(diào)用touches方法,它的默認做法, 就會將事件順著響應(yīng)者鏈條往上傳遞廓旬,
傳遞給上一個響應(yīng)者,接著就會調(diào)用上一個響應(yīng)者的touches方法
如何去尋找上一個響應(yīng)者?
1.如果當前的View是控制器的View,那么控制器就是上一個響應(yīng)者.
2.如果當前的View不是控制器的View,那么它的父控件就是上一個響應(yīng)者.
3.在視圖層次結(jié)構(gòu)的最頂級視圖粮揉,如果也不能處理收到的事件或消息,則其將事件或消息傳遞給window對象進行處理
4.如果window對象也不處理,則其將事件或消息傳遞給UIApplication對象
5.如果UIApplication也不能處理該事件或消息貌夕,則將其丟棄