ios開發事件處理之 :二:事件的產生與傳遞

來源:互聯網
上載者:User

標籤:

 

1.事件是怎麼樣產生與傳遞的?

當發生一個觸摸事件後,系統會將該事件加入到一個由UIApplication管理的事件隊列中.(隊列是先進先出,而棧是先進後出)

UIApplication會從事件隊列中取出最前面的事件,並將事件分發下去以便處理.首先交給主視窗keywindow去處理

主視窗會在視圖階層中找到一個最合適的視圖來處理觸摸事件,當找到最合適的view來處理事件時,該view會調用touchBegan等方法來對事件進行處理

2:時間傳遞的先後順序以及注意點:

觸摸事件的傳遞是從父控制項傳遞到子控制項的.

如果一個父控制項不能接收事件,那麼它裡面的了子控制項也不能夠接收事件.

3:一個控制項什麼情況下不能夠接收事件:

1.不接收使用者互動時不能夠處理事件:如果父控制項不能與使用者互動,那麼子控制項也不會接收到觸摸事件,那麼觸摸事件最後就會傳遞給父控制項的父控制項去處理

userInteractionEnabled = NO

2.當一個控制項隱藏的時候不能夠接收事件:當一個父控制項隱藏後,其上的子控制項也就會被隱藏,也就是父控制項不能接受觸摸事件的時候,其上的子控制項也不能接受觸摸事件

Hidden = YES的時候

3.當一個控制項為透明白時候也不能夠接收事件:當一個父控制項透明的時候,子控制項也會是透明的,當透明度在0.0 - 0.01之間的時候,該控制項不能去接受觸摸事件(透明度為0的時候,就是完全透明,0.0 - 0.01包含0.0和0.01這兩個值)

注意:UIImageView的userInteractionEnabled預設就是NO,

因此UIImageView以及它的子控制項預設是不能接收觸摸事件的

4:UIEvent:每產生一個事件就會產生產生一個UIEvent對象。UITouch為觸摸對象,一根手指觸摸就會產生一個UITouch對象,兩根手指觸摸就會產生兩個UITouch對象。UIEvent還提供了相應的方法獲得在某個view上的觸摸對象UITouch

5:事件的傳遞樣本:

1:事件的行程順序

2: 建立四個不同顏色的view,分別在四個view中實現touchbegan方法,1:四個view中有相同的代碼,則抽成父類直接在父類中實現touchbegan方法,讓子類去繼承,如何在父類中區分不同的子類,可以通過在父類中查看self.class來查看子類所屬的class,或是父類暴露type介面,子類去重寫父類的方法,則在父類中父類就可以根據賦值的type類型來判斷不同的子類,讓不同的子類在父類的方法中實現不同的方法。子類繼承父類後,就擁有了父類所有的代碼,若是想子類和父類發生關聯進行資料傳遞,則父類可以暴露方法供子類去重寫,1:子類可以重寫父類的方法獲得不同於父類的內容   2:父類暴露介面設定傳回值,子類重寫後,則父類就可以拿到子類重寫的方法中的傳回值(get方法介面)2:若是先建立了xib檔案,想把xib中的某個控制項封裝起來,則可以自訂xib中的類,繼承系統的類,然後來到xib中,對要封裝的控制項進行類的關聯:

 

 1:1:當設定黃色view的userInteractionEnabled = NO,點擊黃色的view後,事件是由父控制項傳遞到子控制項,若父控制項不能接受事件,則子控制項也不能去接受事件(3個條件會使控制項不能接受點擊事件),事件由橙色--藍色,此時的view不能與使用者互動,所以事件不能傳遞到黃色的view處,只能傳遞到藍色的view,藍色view能處理事件,則會調用其touchBegan方法 2:當設定藍色view的userInteractionEnabled = NO,點擊黃色的view,事件只會傳遞到橙色的view處,藍色不能接受觸摸事件,所以事件不會傳到藍色view處,也就不會傳到黃色的view處。所以事件由橙色view去處理

2:1:如:UIImageView預設userInteractionEnabled = NO,UIImageView和其上的子控制項都不能接受到觸摸事件,預設在xib中是不能再UIImageView上添加子控制項的,可以通過代碼添加 2:還有一種就是透明度的設定,在0.0-0.01之間的透明度,父控制項透明子控制項也會透明,父控制項隱藏,則子控制項也會隱藏,則其父控制項和子控制項都不會接受到觸摸事件

 

ios開發事件處理之 :二:事件的產生與傳遞

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.