读书笔记---触摸事件与手势识别

来源:互联网 发布:cc网络验证模块源码 编辑:程序博客网 时间:2024/04/19 18:34

UIView和UIViewController都集成了响应者对象的基类UIResponder,UIResponder定义了4个与触摸事件相关的方法

<span style="font-size:18px;"><span style="font-size:18px;">- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;  - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;  - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;  - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;</span></span>

如果在一个视图对象上进行手势识别,可以在这个视图对象上或者是他的视图控制器上重写这4个方法.


iOS设备中能够捕获的事件有3种:触摸事件,移动事件和多媒体远程控制事件


触摸事件是通过设备的触摸屏采集信息,移动事件是通过设备上的重力加速计和陀螺仪采集信息的,多媒体远程控制需要外界iOS扩展设备才能采集.


UIEvent 是封装这三种类型的事件类,一个UIEvent对象表示一个事件,事件中对象包含与当前多点触摸序列相对应的所有出没对象(UITouch),可以通过下面方法获得

<span style="font-size:18px;">- (NSSet *)allTouches;- (NSSet *)touchesForWindow:(UIWindow *)window;- (NSSet *)touchesForView:(UIView *)view;</span>

触摸(UITouch)对象还包括当前所在视图或窗口中的位置信息,以及之前的位置信息(如果有的话),下面的方法可以获得之前的位置信息

<span style="font-size:18px;">- (CGPoint)previousLocationInView:(UIView *)view:</span>

该方法记录了前一个坐标值,函数返回也是一个CGPoint类型的值, 表示触摸在view这个视图上的位置,这里返回的位置是针对view的坐标系的。调用时传入的view参数为空的话,返回的时触摸点在整个窗口的位置。


当一个手指接触屏幕时,触摸就和某个窗口或视图关联在一起,这个关联在事件的整个生命周期都会得到维护,下面的方法是可以获得触摸点所在窗口或视图中的位置

<span style="font-size:18px;">- (CGPoint)locationInView:(UIView *)view://函数返回一个CGPoint类型的值,表示触摸在view这个视图上的位置,这里返回的位置是针对view的坐标系的。调用时传入的view参数为空的话,返回的时触摸点在整个窗口的位置</span>


评论:看完这一章有点小失望,也就后面那个用touch重写pinch的方法还可以看看,而且竟然没有hitTest:withEvent和pointInside:withEvent的介绍,让我实在觉得有点水,不管如何,我算是看完了相应的文章也贴出我自己之前的总结,总结里也有相应的链接,大家可以去看看
iOS中事件响应的学习记录

更多干货,请支持原作:http://item.jd.com/11436547.html

0 0
原创粉丝点击