ios中事件处理的几个问题
1.ios的事件处理可以分为三类:触摸 加速计(摇一摇) 远程控制
2.响应者对象:继承UIResponder的对象,(可以理解为可以处理事件的对象)UIApplication,UIView,UIViewController都继承自UIResponder
3.UITouch对象
当手指触摸屏幕时系统会自动创建与手指相关联的UITouch对象,一根手指对应一个UITouch对象
UITouch对象的作用是记录与手指相关联的信息eg:触摸的时间,位置,阶段等
当手指移动时系统会更新UITouch对象 离开时销毁该对象
4.UITouch的一些属性
5.UITouch的一些方法
6.事件处理过程
产生事件后系统会把事件添加到由UIApplication管理的事件处理队列中
UIApplication取出最前面的事件交给应用程序主窗口keyWindow
keyWindow一次按照父子控件传递下去
注意:如果父控件不能接受事件子控件也不能接收事件
即:userInteractionEnable = NO;
hidden = YES;(父控件隐藏自控件也隐藏)
alpha = 0.0~0.01;(自控件跟着透明)
此外imageView默认userInactionEnable = NO,且imageView不能通过storyBoard添加自控件代码可以;
7.事件处理的底层实现
底层是通过调用hitTest方法返回最合适的view的过程:
1)先判断自己能否接受事件
2)然后判断点是否在自己身上
3)从后往前遍历子控件,转换point坐标[self convertPoint:point toView:childView],调用子控件的hitTest方法
4)若有return childView
5)若无return self
8.事件响应的顺序