iOS開發中的事件處理 二 事件傳遞,響應者鏈條

2021-07-15 03:20:26 字數 991 閱讀 1444

ios開發中的事件處理(二)-事件傳遞,響應者鏈條-

**: 

不接收使用者互動

userinteractionenabled = no

隱藏hidden = yes

透明alpha = 0.0 ~ 0.01

主視窗會在檢視層次結構中找到乙個最合適的檢視來處理觸控事件,但是這僅僅是整個事件處理過程的第一步 找到合適的檢視控制項後,就會呼叫檢視控制項的touches方法來作具體的事件處理

touchesbegan…

touchesmoved…

touchedended… 這些touches方法的預設做法是將事件順著響應者鏈條向上傳遞,將事件交給上乙個響應者進行處理

先將事件物件由上往下傳遞(由父控制項傳遞給子控制項),找到最合適的控制項來處理這個事件。 呼叫最合適控制項的touches….方法 如果呼叫了[super touches….];就會將事件順著響應者鏈條往上傳遞,傳遞給上乙個響應者 接著就會呼叫上乙個響應者的touches….方法
如果當前這個view是控制器的view,那麼控制器就是上乙個響應者 如果當前這個view不是控制器的view,那麼父控制項就是上乙個響應者
為什麼用佇列管理事件,而不用棧?
佇列先進先出,能保證先產生的事件先處理。棧先進後出。

iOS 中的事件處理

基礎理論 1 在ios 中 不是任何物件都能處理事件的,只有繼承uiresponder的物件才能接受並處理事件,我們稱之為響應者物件 2 uiresponder當中存在下列四個api 觸控開始時呼叫 void touchesbegan nsset touches withevent nullable...

IOS 開發 事件截斷處理

前兩節接講的在蘋果原有傳輸順序上進行定製自己的需求,一般而言這些就足夠了,不過對於複雜的畫圖程式,可能要求稍微高點。比如說我有乙個scrollview a 的子view為scrollview b,我在b上滑動到一定的距離後,讓a滑動,預設輕快下辦不到,怎麼辦?我們重寫a的hittesting方法,在...

ios觸控事件二 事件傳遞

了解了uievent以及uitouch之後,那麼事件在ios是如何傳遞的呢?響應者鏈 響應者物件是乙個能夠接收並處理事件的物件。注意在ios中不是任何物件都能處理事件,只有直接或間接繼承了uiresponder的物件才可作為事件的響應者。uiresponder是所有響應者物件的基類。在ios的ui控...