天天看點

iOS事件傳遞與響應鍊

iOS事件響應都是基于UIResponder,UIApplication、UIWindow、UIViewcontroller都是繼承自UIResponder,CALayer不是繼承自UIResponder的,是以它無法響應事件,隻負責UIView的界面顯示和渲染。

事件傳遞的過程:

使用者點選手機螢幕 -> 點選事件加入到UIApplication任務隊列中 -> UIWindow -> UIViewController(若有) -> UIView -> SubView - > 直到找到可以處理該事件的View,若找不到則廢棄。

事件響應的過程:

響應鍊是從最合适的view開始傳遞,處理事件傳遞給下一個響應者,響應者鍊的傳遞方法是事件傳遞的反方法,如果所有響應者都不處理事件,則事件被丢棄。我們通常用響應者鍊來擷取上幾級響應者,方法是UIResponder的nextResponder方法。