作用:
uievent稱為事件物件,記錄事件產生的時刻和型別
3.主視窗會在檢視層次結構中找到乙個最合適的檢視來處理觸控事件,這也是整個事件處理過程的第一步
4.找到合適的檢視控制項後,就會呼叫檢視控制項的touches方法來作具體的事件處理(這其實就是事件的響應,下面詳細介紹)
重點:1.如何找到最合適的控制項來處理事件?*
1.自己是否能接收觸控事件?
2.觸控點是否在自己身上?
3.從後往前遍歷子控制項(直屬子控制項),重複前面的兩個步驟(遞迴)
4.如果沒有符合條件的子控制項,那麼自己就最適合處理
2.能否接受觸控事件的判斷準則:
1.不接收使用者互動userinteractionenabled= no;
2.隱藏hidden= yes
3.透明度alpha= 0.0~0.01
3.如果父控制項不能接收觸控事件,那麼子控制項就不可能接收到觸控事件
4.uiimageview的userinteractionenabled預設就是no,因此uiimageview
以及它的子控制項預設是不能接收觸控事件的
三 . 事件的響應(重點)
這裡所說的事件的響應其實就是呼叫touches方法
找到最合適的檢視控制項後,就會呼叫控制項的touches方法來作具體的事件處理(響應)
touchesbegan…
touchesmoved…
touchedended…
這些touches方法的預設做法是將事件順著響應者鏈條向上傳遞,將事件交給上乙個響應者進行處理(響應)簡而言之就是:如果找到了最合適的響應者,但是如果其沒有實現touches方法,就會呼叫其上乙個響應者物件的touches方法
響應者鏈條:由很多響應者(繼承了uiresponder的物件)鏈結在一起組合起來的乙個鏈條
如何判斷當前響應者的上乙個響應者是誰呢?
判斷當前是否是控制器的view,如果是控制器的view,那麼上乙個響應者就是控制器
如果當前不是控制器的view,上乙個響應者就是其父控制項
響應者鏈條的作用?
可以讓乙個觸控事件發生的時候讓多個響應者同時響應事件(也就是執行touches方法)
做法:在當前響應者的touches方法中呼叫super的touches方法
總結:事件傳遞的完整過程:
1.事件由上往下傳遞(由父控制項傳遞給子控制項),找到最合適的控制項來處理這個事件
2.呼叫最合適控制項的touches….方法
如果呼叫了[super touches….]; 就會將事件順著響應者鏈條往上傳遞,傳遞給上乙個響應者,此時兩者都能響應事件
3.如果最合適的控制項沒有實現touches….方法,就會將事件順著響應者鏈條往上傳遞,傳遞給上乙個響應者,由上乙個響應者來響應事件
簡而言之:
2.事件的響應 : 呼叫最合適的響應者的touches方法--> 如果其沒有實現,預設做法,將事件傳遞給上乙個響應者-->找到上乙個響應者,呼叫它的touches方法
我們使用響應者鏈條實現控制器的跳轉的實際應用
如果使用好響應者鏈可以幹很多事 大家自己去
事件傳遞和響應者鏈條
附上一張圖能很好地來說明事件是怎麼傳遞的 二 響應者鏈條 1.響應者鏈條示意圖 3.如何尋找下乙個響應者?1 如果當前這個view是控制器的view,那麼控制器就是上乙個響應者。2 如果當前這個view不是控制器的view,那麼父控制項就是上乙個響應者。4.如果最合適處理事件的控制項不想處理控制項,...
事件處理響應者鏈條
mj 事件的完整處理過程 1.先將事件物件由上往下傳遞 由父控制項傳遞給子控制項 找到最合適的控制項來處理這個事件 2.呼叫最合適控制項的touches.方法 3.如果touches.裡面呼叫了 super touches.方法,則順著響應者鏈條往上找,找到上乙個響應者 4.執行上乙個響應者的tou...
響應者鏈條
發生觸控事件後,系統佇列 不接收使用者互動 userinteractionenabled no隱藏 hidden yes透明 alpha 0.0 0.01 主視窗會在檢視層次結構中 找到乙個最合適的檢視來處理觸控事件 但是這僅僅是整個事件處理過程的第一步 找到合適的檢視控制項後,就會呼叫檢視控制項的...