「OC」iOS事件处理流程

「OC」初识iOS事件处理流程

触摸事件

iOS的事件有好几种:Touch Events(触摸事件)、Motion Events(运动事件,比如重力感应和摇一摇等)、Remote Events(远程事件,比如用耳机上得按键来控制手机),其中最常用的应该就是Touch Events了,基本存在于每个app的每个地方

触摸事件的响应周期

uitouchflow.png

事件 响应者

在学习之前,还需要将基本的概念了解清楚

UIEvent

UIEvent即为事件,事件一共被分为三类,包括触摸事件(Touch Events对应就是UITouch)、运动事件(Motion Events)、远程控制事件(Remote Control Events)。

触摸的目的是生成触摸事件供响应者响应,一个触摸事件对应一个UIEvent对象,其中的 type 属性标识了事件的类型(即三种不同的时间类型)。

当我们app获取到触摸事件的时候,就会将event放置到一个事件队列之中(先触发的事件先执行,符合队列先进先出的特点)

UITouch

一个手指一次触摸屏幕,就对应生成一个UITouch对象。多个手指同时触摸,生成多个UITouch对象。

多个手指先后触摸,系统会根据触摸的位置判断是否更新同一个UITouch对象。若两个手指一前一后触摸同一个位置(即双击),那么第一次触摸时生成一个UITouch对象,第二次触摸更新这个UITouch对象(UITouch对象的 tap count 属性值从1变成2);若两个手指一前一后触摸的位置不同,将会生成两个UITouch对象,两者之间没有联系。

每个UITouch对象记录了触摸的一些信息,包括触摸时间、位置、阶段、所处的视图、窗口等信息。

手指离开屏幕一段时间后,确定该UITouch对象不会再被更新将被释放。

在UIEvent之中使用以下方法可以获得UIEvent的touch信息:

NSSet *touches = [event allTouches];
for (UITouch *touch in touches) {
   
   
    // 访问每个 UITouch 对象的属性
    CGPoint location = [touch locationInView:view];
    NSTimeInterval timestamp = [touch timestamp];
    // 其他属性...
}

UIResponder

每个响应者都是一个UIResponder对象,即所有继承于自UIResponder的对象,本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值