ios之事件的傳遞過程總結

來源:互聯網
上載者:User

標籤:style   blog   color   io   os   sp   div   on   cti   

 1 一、事件的傳遞過程 2 1.使用者點擊螢幕,產生一個UIEvent(觸摸事件)對象 3 2.UIApplication最先接收到這個事件,並且把這個事件添加到一個事件隊列中 4 3.UIApplication會將事件隊列中的所有事件按順序取出來進行傳遞和處理 5 4.UIApplication首先會將事件對象傳遞給app的主視窗 6 5.由主視窗找出最合適的UIView來處理這個事件 7 1> UIApplication -> UIWindow -> controller.view 8 2> UIApplication -> UIWindow -> controller.view -> 綠色 9 3> UIApplication -> UIWindow -> controller.view -> 黃色10 4> UIApplication -> UIWindow -> controller.view -> 黃色 -> 藍色 -> 紅色11 12 6.下面這些情況的UIView都是不能接收和處理事件的13 1> userInteractionEnabled = NO;14 2> hidden = YES;15 3> alpha = 0~0.0116 17 self.view.subviews18 [0, 1, 2, 3]19 20 7.當事件傳遞到控制器的View時:21 1> 如果控制器的view不能接收事件,事件傳遞到此結束22 2> 如果控制器的view能接收事件,就判斷觸摸點在不在控制器的view上面23 (1)如果觸摸點不在控制器的view上面,事件傳遞到此結束24 (2)如果觸摸點在控制器的view上面,就(反序)遍曆控制器的view的所有子控制項25       * 如果這個子控制項不能處理事件,continue,遍曆下一個子控制項26       * 如果這個子控制項能處理事件,判斷觸摸點在不在這個子控制項上面27          # 如果觸摸點不在這個子控制項上面,continue,遍曆下一個子控制項28          # 如果觸摸點在這個子控制項上面,再次遍曆它的子控制項,重複前面(2)的過程29          30 3> 如果找不到合適的子控制項來處理這個事件,就交給控制項本身來處理這個事件31 32 4> 大體來說, 就是先判斷能不能處理事件,再判斷觸摸點在不在當前控制項範圍內33 34 5> 找到最合適的子控制項後,就讓這個子控制項來處理事件:35 調用子控制項的touchesBegan等方法進行處理36 37 8.super的touchesBegan方法的處理過程38 1> super會將UIEvent(事件)對象往回傳39 2> 將事件傳遞給自己的nextResponder,nextResponder就有資格處理事件40 (就有機會調用nextResponder的touchesBegan方法)41 3> 如果當前響應者對象沒有調用super的touchesBegan方法,那麼事件就到此為止42 4> 如果當前view不是控制器的view,直接傳回給superview43    如果當前view是控制器的view,直接傳回給控制器。然後再由控制器傳回視窗,最後傳到UIAppilcation44 45 9.事件的傳遞過程46 // - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event;47 1> UIApplication -> UIWindow *window;48 UIView *hitTestView = [window hitTest:point withEvent:envent];49 50 51 10.事件的完整傳遞和處理過程52 1> 使用者點擊螢幕,產生一個UIEvnent *evt對象,並且產生一個觸摸點CGPoint point;,由UIApplication接收這個事件53 54 2> UIApplication會調用55 UIView *myview = [window hitTest:point widthEvent:evt];56 用來擷取最先處理觸摸事件的UIView57 58 3> 讓myview處理這個觸摸事件,調用myview的touchesBegan等方法

 

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.