UI_事件、响应者链、手势
- 事件的基本概念
- 触摸的基本概念
- 响应者链
- 手势识别器
事件的基本概念
事件概述:
UIEvent:事件,是由硬件捕捉的一个表示用户操作设备的对象。
分三类:触摸事件、晃动事件、远程控制事件
触摸事件:用户通过 触摸设备屏幕操作对象、输入数据。支持多点触摸,包含一个到多个触摸点
触摸的基本概念UITouch
实现触摸
UIView支持触摸事件(因为继承与UIResponder),而且支持多点触摸。
UITouch *touch = [touch anyObject]; //得到touch
需要定义UIView子类,实现触摸相关的方法
1 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
2 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
3 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
4 - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;触摸中断(电话)
2 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
3 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
4 - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;触摸中断(电话)
touch的属性
- 这个点当前的View和Window
- locationInView当前手指的位置
- PreviousLocationInView上一次手指的位置
触碰检测
- Hit-Test通过检测找出touch发生在哪个视图上,递归检测所有子视图,定位准确位置
UIResponder
- UIResponder:响应者,是可以响应事件并且可以对其进行处理的对象
- UIResponder是响应者的基类,UIApplication、UIView和所有从UIView派生出来的子类都是源自它
- 第一响应者是当前正在接收事件的响应者对象
响应者链
什么是响应者链?
有多个响应者对象组成的链 ,定义了iOS中触摸事件的交互规则
什么是响应者?
- UIResponder。响应者类
- iOS中所有能响应事件(触摸、晃动、远程事件)的对象都是响应者。
- 系统定义了一个抽象的父类UIResponder来表示响应者。其子类都是响应者
检测触碰视图:
- 硬件检测到触碰操作,会将消息交给UIApplication,开始检测。
- UIApplication->Window->viewController->view->检测所有子视图
- 最终确认碰触位置,完成响应者链的查询过程。
阻断响应者链:
- 响应者链可以被打断。无法完成检测查询过程。
- 视图类的属性:userInteractionEnabled。关闭后能阻断查询过程。此属性是UIView的,所有的子类都能设置,当视图hidden属性为yes或者alpha为0时,视图也不接收事件
- 在一定时间内关闭事件传递:应用程序调用UIApplication的beginIgnoringInteractionEvents和endIgnoringInteractionEvents
手势识别器
什么是手势识别器?
- 手势识别器是对触摸事件做了封装,我们无需自己判断某个手势是否触发,手势识别器本身起到了识别作用,我们把重心放在识别之后要做什么操作上面。
- 手势识别器是iOS中比较抽象的一个类,用于识别一个手势,所谓手势:有规律的触摸
手势识别器的分类:
手势识别器有7个子类
- 轻拍手势UITapGestureRecognizer
- 平移手势UIPanGestureRecognizer
- 轻扫手势UISwipeGestureRecognizer
- 缩放手势UIPinchGestureRecognizer
- 旋转手势UIRotationGestureRecognizer
- 长按手势UILongPressGestureRecognizer
- 屏幕边缘平移手势UIScreenEdgeGestureRecognizer
如何使用识别器
- 创建UIxxxGestureRecognizer对象,使用initWithTarget:action:方法
- 配置要识别的手势的相关信息
- 将手势添加到某个视图上
- 实现手势识别球里定义的方法
view的transform属性
transform是view的一个重要属性,它在矩阵层上改变view的显示状态,能实现view的缩放、旋转、平移功能。

浙公网安备 33010602011771号