ios觸控事件二 事件傳遞

2021-07-09 01:40:21 字數 849 閱讀 7877

了解了uievent以及uitouch之後,那麼事件在ios是如何傳遞的呢?

響應者鏈:

響應者物件是乙個能夠接收並處理事件的物件。注意在ios中不是任何物件都能處理事件,只有直接或間接繼承了uiresponder的物件才可作為事件的響應者uiresponder是所有響應者物件的基類。在ios的ui控制項中,不是繼承了uiview,就是繼承了uicontrol,實際上uicontrol繼承了uiview,uiview又繼承了uiresponder.

/*uicontrol ---> uiview ---> **uiresponder** --->nsobject*/

所以,實際上所有的ui控制項都可以作為事件的響應者。即uiview、uiviewcontroller等都可以作為響應者物件。

響應者鏈表示一系列的響應者物件。事件被交由第一響應者(觸控的那個view)物件,如果第一響應者不處理,事件被沿著響應者鏈向上傳遞,交給下乙個響應者(next responder).

當使用者與某個控制項互動時,該空間將會作為」第一響應者(firsr responder)」,第一響應者將作為響應者鏈的開始,該事件首先被傳送給第一響應者(即使用者觸控螢幕的控制項),事件將沿著響應者鏈乙隻向下傳遞,直到被某個響應者處理。

注意:若某個事件被某乙個響應者處理,則該事件就會停止傳遞

����������������������響應者鏈的事件傳遞過程

另外注意uiview在以下情況下不接受觸控事件:

觸控事件之事件傳遞

uiview是如何判定這個事件是否是自己應該處理的呢?hittest withevent 方法的處理流程如下 呼叫當前view的pointinside withevent 方法來判定觸控點是否在當前view內部,如果返回no,則hittest withevent 返回nil 如果返回yes,則向當前...

iOS觸控事件

在ios開發的觸控事件中包括 1.touchesbegan 觸控開始在一次觸控事件中只會執行一次 void touchesbegan nsset touches withevent uievent event touches是nsset集合,表示事件由幾個手指操作,最多5個 2.touchesmov...

IOS 觸控事件

uitouch uitouch類中包含五個屬性 window 觸控產生時所處的視窗。由於視窗可能發生變化,當前所在的視窗不一定是最開始的視窗 view 觸控產生時所處的檢視。由於檢視可能發生變化,當前檢視也不一定時最初的檢視 timestamp 時間戳記錄了觸控事件產生或變化時的時間,單位是秒 ph...