iOS中事件相應的學習記錄

來源:互聯網
上載者:User

touch事件分為3類

  • 觸控事件(單點、多點觸控以及各種手勢操作)
  • 感應器事件(重力、加速度感應器等)
  • 遠端控制事件(遠程遙控iOS裝置多媒體播放等)


    觸控事件分為加入了手勢 也沒有加入的情況,如果加入了手勢,手勢會截取點擊事件.手勢分為好幾種,例如單擊,長按,拖拽等.如果是單擊事件的話狀態就會是從可識別到成功或失敗,如果是多點觸摸就會由可識別,到失敗或者開始,改變,已識別或取消.


    UITouch

    • touchesBegan:withEvent:
    • touchesMoved:withEvent:
    • touchesEnded:withEvent:
    • touchesCancelled:withEvent:



      響應者鏈

      hit-test view

      hitTest:withEvent:方法的處理流程如下:

      首先調用當前視圖的pointInside:withEvent:方法判斷觸摸點是否在當前視圖內;

      若返回NO,則hitTest:withEvent:返回nil;

      若返回YES,則向當前視圖的所有子視圖(subviews)發送hitTest:withEvent:訊息,所有子視圖的遍曆順序是從最頂層視圖一直到到最底層視圖,即從subviews數組的末尾向前遍曆,直到有子視圖返回非Null 物件或者全部子視圖遍曆完畢;

      若第一次有子視圖返回非Null 物件,則hitTest:withEvent:方法返回此對象,處理結束;

      如所有子視圖都返回非,則hitTest:withEvent:方法返回自身(self)。


      事件傳遞機制

      view 向上一層傳遞,如果上一層不能影響還會向上一層繼續傳遞,一直傳遞到rootVC,如果rootvc還不能相應的話則會傳遞給windows,如果windows還不能相應的話,會傳遞給application,如果繼續不能相應則廢棄這次觸摸事件.


      參考文章:iOS事件機制 Cocoa Touch事件處理流程--響應者鏈

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.