ios中事件的響應鏈(Responder chain)和傳遞鏈

來源:互聯網
上載者:User

標籤:cat   開始   roo   概念   ...   iap   root   ios   視圖   

事件的響應鏈涉及到的一些概念

  • UIResponder類,是UIKIT中一個用於處理事件響應的基類。窗又上的所有事件觸發,都由該類響應(即事件處理入又)。所以,窗又上的View及控制器都是 派生於該類的,例如UIView、UIViewController等。

  • 調用UIResponder類提供的方法或屬性,我們就可以捕捉到窗又上的所有響應 事件,並進行處理。

  • 響應者鏈條是由多個響應者對象串連起來的鏈條,其中響應者對象是能處理事 件的對象,所有的View和ViewController都是響應者對象,利用響應者鏈條能 讓多個控制項處理同一個觸摸事件. 

如,響應者鏈有以下特點:

響應者鏈通常是由 initial view 開始;

  • UIView 的 nextResponder 它的 superview;如果 UIView 已經是其所在的 UIViewController 的 top view,那麼 UIView 的 nextResponder 就是 UIViewController;

  • UIViewController 如果有 Super ViewController,那麼它的 nextResponder 為其 Super ViewController 最表層的 View;如果沒有,那麼它的 nextResponder 就是 UIWindow;

  •  UIWindow 的 contentView 指向 UIApplication,將其作為 nextResponder;

  •  UIApplication 是 個響應者鏈的終點,它的 nextResponder 指向nil,整個

    responder chain 結束。 

Hit-Test View 與 Hit-Testing 

 

假設使用者觸摸了的 View E 地區,那麼 iOS 將會按下面的順序反覆檢測 subview 來尋找 Hit-Test View

  1. 觸摸地區在視圖 A 內,所以檢測視圖 A 的 subview B 和 C;

  2. 觸摸地區不在視圖 B 內,但是在視圖 C 內,所以檢查視圖 C 的 subview D 和 E;

  3. 觸摸地區不在視圖 D 內,在視圖 E 中;

視圖 E 在整個視圖體系中是 lowest view,所以視圖 E 就是 Hit-Test View 。 

事件的鏈有兩條:事件的響應鏈;Hit-Testing 時事件的傳遞鏈。

  •  響應鏈:由離 戶最近的view向系統傳遞。 initial view –> super view –> .....–> view controller –> window –> Application –> AppDelegate

  •  Hit-Testing 鏈:由系統向離 戶最近的view傳遞。 UIKit –> active app‘s event queue –> window –> root view –>......–>lowest view 

ios中事件的響應鏈(Responder chain)和傳遞鏈

聯繫我們

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