“事件傳遞過程”(響應(yīng)者鏈條)與“hitTest:方法底層實(shí)現(xiàn)”

一 . “事件傳遞過程”

1.問題描述

1. A和C是普通的view, B是一個綁定事件的按鈕,A添加了點(diǎn)擊手勢。 此時點(diǎn)擊C,響應(yīng)A的tap手勢事件?還是B的按鈕點(diǎn)擊事件?

視圖布局示例

2. 運(yùn)行結(jié)果

  1. C視圖開啟用戶交互時,此次響應(yīng)的是A視圖的tap手勢事件
  2. 禁用C視圖用戶交互時,此次響應(yīng)的是B視圖的按鈕點(diǎn)擊事件

但是為啥?

3.觸摸事件

1> 只要繼承UIResponder就能能夠響應(yīng)并處理觸摸事件
2> UIResponder包三種事件:觸摸事件、加速計(jì)事件、遠(yuǎn)程控制事件

觸摸事件方法

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;

以上三個方法中,其中都包含著UITouch對象。

1> UITouch的作用就是它會保存著這個手指相關(guān)的一些信息,觸摸時間,位置,階段等之類的信息。

2> 當(dāng)手指移動時,系統(tǒng)會更新同一個UITouch對象,使之能夠一直保存該手指在的觸摸位置, 當(dāng)手指頭離開屏幕的時候,那么與之對應(yīng)的UITouch對象就會銷毀了。

UITouch的屬性

觸摸產(chǎn)生時所處的窗口
@property(nonatomic,readonly,retain) UIWindow    *window;

觸摸產(chǎn)生時所處的視圖
@property(nonatomic,readonly,retain) UIView      *view;

短時間內(nèi)點(diǎn)按屏幕的次數(shù),可以根據(jù)tapCount判斷單擊、雙擊或更多的點(diǎn)擊
@property(nonatomic,readonly) NSUInteger          tapCount;

記錄了觸摸事件產(chǎn)生或變化時的時間,單位是秒
@property(nonatomic,readonly) NSTimeInterval      timestamp;

當(dāng)前觸摸事件所處的狀態(tài)
@property(nonatomic,readonly) UITouchPhase        phase; 

其中的UITouchPhase是一個枚舉類型,包含:

UITouchPhaseBegan(觸摸開始)
UITouchPhaseMoved(接觸點(diǎn)移動)
UITouchPhaseStationary(接觸點(diǎn)無移動)
UITouchPhaseEnded(觸摸結(jié)束)
UITouchPhaseCancelled(觸摸取消)

UITouch的方法

- (CGPoint)locationInView:(UIView *)view;
返回值表示觸摸在view上的位置
這里返回的位置是針對view的坐標(biāo)系的(以view的左上角為原點(diǎn)(0, 0))
調(diào)用時傳入的view參數(shù)為nil的話,返回的是觸摸點(diǎn)在UIWindow的位置

- (CGPoint)previousLocationInView:(UIView *)view;
該方法記錄了前一個觸摸點(diǎn)的位置

二. “hitTest:方法底層實(shí)現(xiàn)”

hitTest:方法底層實(shí)現(xiàn)

更多參考鏈接(http://m.itdecent.cn/p/e84e3f47a040
)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容