iOS触摸事件
(一) IOS中的事件
(1)响应者对象:只有继承了UIResponder的对象才能处理事件。UIView,UIViewController,UIApplication都是响应者对象。
(2)事件:
(3)UIView触摸事件
(4)参数:
1.touches继承UITouch对象。一根手指对应一个UITouch对象。里面保存着和本次手指触摸相关的位置,事件,阶段。当手指移动的时候系统会更新同一个UITouch,离开屏幕的时候会销毁。
2.touches属性:
3.touches方法
(5)View响应事件:多个View叠加,触摸后则是一层层响应的。
(6)UIView不接受触摸的三种情况
1.userInteractionEnable = false
2.hidden = true
3.alpha = 0.0 ~ 0.01
注意:ImageView的用户交互默认就是NO。
如果父控件关了用户交互,那么子控件也无法用户交互。
按钮直接就触发单击事件了。不触发父控件的touchBegin了。
(7)触摸事件响应原理:有一个hitTest方法。然后在里面递归,最终找到本点击View。
发生触摸后,系统会将触摸事件加入由UIApplicaion管理的事件队列中。然后队列取出最前最上面的事件处理,发送给应用程序主窗口(keywindow),主窗口调用hitTestWithEvevt方法找到一个最合适的子视图来处理触摸事件。
(8)响应者链条:只要继承了Responder的都死响应者对象。那么View一整个触摸的过程就是响应者链条。
(9)一般View触摸事件 :在应用程序已启动会启动运行循环。一直在等待用户交互。 当触摸,循环接受事件,告诉APP 告诉Window 告诉子控制器,一层层响应。然后到最底层,super 父类有依次响应,再给运行循环。