ios中事件处理的几个问题

1.ios的事件处理可以分为三类:触摸 加速计(摇一摇) 远程控制

2.响应者对象:继承UIResponder的对象,(可以理解为可以处理事件的对象)UIApplication,UIView,UIViewController都继承自UIResponder

3.UITouch对象

当手指触摸屏幕时系统会自动创建与手指相关联的UITouch对象,一根手指对应一个UITouch对象

UITouch对象的作用是记录与手指相关联的信息eg:触摸的时间,位置,阶段等

当手指移动时系统会更新UITouch对象 离开时销毁该对象

4.UITouch的一些属性

ios中事件处理的几个问题_第1张图片

5.UITouch的一些方法

ios中事件处理的几个问题_第2张图片

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


ios中事件处理的几个问题_第3张图片

8.事件响应的顺序

ios中事件处理的几个问题_第4张图片

你可能感兴趣的:(ios中事件处理的几个问题)