iOS事件傳遞和事件響應者鏈 20170810

2022-05-05 01:54:13 字數 730 閱讀 4926

區別

事件的傳遞和響應的區別:

事件的傳遞是從上到下(父控制項到子控制項),事件的響應是從下到上(順著響應者鏈條向上傳遞:子控制項到父控制項。

引出

當我們手指觸控螢幕的時候,ios系統是怎麼找到對應的圖層,並響應手勢的呢?

事件的產生

主視窗會在檢視層次結構中找到乙個最合適的檢視來處理觸控事件,這也是整個事件處理過程的第一步。

找到合適的檢視控制項後,就會呼叫檢視控制項的touches方法來作具體的事件處理。

事件的傳遞

從下往上

首先,對於圖層結構來說無非是window上一層一層的view圖層,當我們觸控window上的某乙個圖層的時候,這個時候會從最下面也就是window 上開始遞迴遍歷上邊的圖層,當找到上層的某乙個view圖層之後,會繼續在此view內再次重複以上操作,直到找到手指觸控的view,響應事件。

事件響應 查詢順序 從後往前遍歷子檢視

先從子控制項陣列中最後乙個元素,依次查詢目標的view,如果沒有合適的處理這個事件的view那麼此view就是合適的view,去響應事件

當然 有三種情況 不能接收觸控事件

兩個方法

iOS事件傳遞 響應者鏈

事件傳遞 響應者鏈 對於觸控事件來說,window 會傳到 發生觸控的view,被稱之為hit test view。此過程叫 hit testing。對於手勢和遠端控制,這個第一響應被發到 first responder.最終響應者鏈要找到處理事件的物件。規則如下。1 hit testing 檢測的...

iOS 響應者鏈,事件的傳遞

先將事件物件由上往下傳遞 由父控制項傳遞給子控制項 找到最合適的控制項來處理這個事件。呼叫最合適控制項的touches 方法 如果呼叫了 super touches 就會將事件順著響應者鏈條往上傳遞,傳遞給上乙個響應者 接著就會呼叫上乙個響應者的touches 方法 如果當前這個view是控制器的v...

iOS 響應者鏈,事件的傳遞

觸控事件 對於觸控事件,window物件會嘗試著首先將事件傳遞給觸控事件發生點得view。這個view被視為 命中測試view hit test view 尋找 命中測試view 的過程被稱作 命中測試 關於 命中測試 會在下面的命中測試返回觸控事件發生點的view有詳情描述。手勢和遠端控制事件 對...