首页 > 代码库 > UI第四课
UI第四课
主要内容:事件处理(触摸、响应者链)
一、事件的基本概念
UIEvent:事件,是由硬件捕捉的一个表示用户操作设备的对象
分三类:触摸事件、晃动事件、远程控制事件
触摸事件:用户通过触摸设备屏幕操作对象、输入数据。支持多点触摸
触摸的概念:
UIView支持触摸事件(因为继承于UIResponder),而且支持多点触摸
需要定义UIView子类,实现触摸相关的方法
touches...began / / 开始触摸
touches...moved / / 触摸过程中
touches...ended / / 结束触摸
touches...canceled / / 触摸暂停
使用触摸实现手势:
手势:有规律的触摸
UITouch代表触摸在屏幕上的一根手指,可以获取触摸时间和位置
二、响应者链
由多个响应者对象组成的链
UIResponder:响应者类
iOS中所有能响应事件(触摸、晃动、远程事件)的对象都是响应事件
系统定义了一个抽象的父类UIResponder来表示响应者,其子类是响应者
检测触碰视图:
硬件检测到触摸操作,会将信息传递给UIApplication,开始检测
UIApplication ->window ->viewController ->view ->检测所有子视图,最终确认触碰位置,完成响应者链的查询过程
检测到响应者后,实现touchesBegan:withEvent等方法,即处理事件
如果响应者没有处理事件,事件会向下传递,如果没有响应者处理事件,则丢弃触摸事件
事件处理的顺序和触摸检测查询相反
触摸子视图 ->view ->viewController ->window ->UIApplication
四个方法
/ / 开始触摸
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
}
/ / 触摸过程中
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent)event
{
}
/ / 触摸停止
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent)event
{
}
/ / 触摸暂停
- (void)touchesCanceled:(NSSet *)touches withEvent:(UIEvent *)event
{
}
UI第四课