1.UIApplication(繼承自UIResponder)通過自己的UIWindow的- (void)sendEvent:(UIEvent *)event; // called by UIApplication to dispatch events to views inside the window方法將事件派發出去.
2.UIWindow首先將事件派發給手勢識別器(級別高于響應者鏈),手勢識別器不識別(UIGestureRecognizerStateFailed)后派發給window下的視圖.
3.派發過程(手勢識別失敗的情況下)
The UIApplication object calls this method to dispatch events to the window. Window objects dispatch touch events to the view in which the touch occurred, and dispatch other types of events to the most appropriate target object.
這是官方原話,大致理解為派發事件,結合官方文檔我個人做以下解釋(不服請反駁):UIApplication拿到事件>- (void)sendEvent:(UIEvent *)event; 將事件交給 the touch occurred及觸摸的視圖,如果觸摸的視圖通過重寫方法不處理該事件則會繼續傳遞到下一個響應者(一般是superview)直到找到響應者,如果沒有處理該事件則交由UIApplication最終拋棄。
4.派發過程中會調用- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event; // recursively calls -pointInside:withEvent:. point is in the receiver's coordinate system這是一個抓測試的響應返回一個view及響應者,尋找的過程叫響應者鏈,通過重寫此方法返回一個view攔截響應。
ios捕獲并處理event的過程
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...