1.ios的事件處理可以分為三類:觸摸 加速計(搖一搖) 遠(yuǎn)程控制
2.響應(yīng)者對象:繼承UIResponder的對象,(可以理解為可以處理事件的對象)UIApplication,UIView,UIViewController都繼承自UIResponder
3.UITouch對象
當(dāng)手指觸摸屏幕時系統(tǒng)會自動創(chuàng)建與手指相關(guān)聯(lián)的UITouch對象,一根手指對應(yīng)一個UITouch對象
UITouch對象的作用是記錄與手指相關(guān)聯(lián)的信息eg:觸摸的時間,位置,階段等
當(dāng)手指移動時系統(tǒng)會更新UITouch對象 離開時銷毀該對象
4.UITouch的一些屬性
5.UITouch的一些方法
6.事件處理過程
產(chǎn)生事件后系統(tǒng)會把事件添加到由UIApplication管理的事件處理隊列中
UIApplication取出最前面的事件交給應(yīng)用程序主窗口keyWindow
keyWindow一次按照父子控件傳遞下去
注意:如果父控件不能接受事件子控件也不能接收事件
即:userInteractionEnable = NO;
hidden = YES;(父控件隱藏自控件也隱藏)
alpha = 0.0~0.01;(自控件跟著透明)
此外imageView默認(rèn)userInactionEnable = NO,且imageView不能通過storyBoard添加自控件代碼可以;
7.事件處理的底層實現(xiàn)
底層是通過調(diào)用hitTest方法返回最合適的view的過程:
1)先判斷自己能否接受事件
2)然后判斷點是否在自己身上
3)從后往前遍歷子控件,轉(zhuǎn)換point坐標(biāo)[self convertPoint:point toView:childView],調(diào)用子控件的hitTest方法
4)若有return childView
5)若無return self
8.事件響應(yīng)的順序