首页 / IOS / IOS (补充)触摸事件处理
IOS (补充)触摸事件处理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了IOS (补充)触摸事件处理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2567字,纯文字阅读大概需要4分钟。
内容图文
![IOS (补充)触摸事件处理](/upload/InfoBanner/zyjiaocheng/1221/967c7403103747d1ae33505fa8236013.jpg)
[1]事件的基本概念
UIEvent :事件,是由硬件捕捉的一个表示用户操作设备的对象。
分三类:触摸事件、晃动事件、远程控制事件
触摸事件:用户通过触摸设备屏幕操作对象、输入数据。支持多点触摸,包含 1 个到多个触摸点
UIView 支持触摸事件(因为继承于 UIResponder ),而且支持多点触摸。
需要定义 UIView 子类,实现触摸相关的方法。
touches..began 、
touches..moved 、
touches...ended 、
touches..canceled
[2]手势:有规律的触摸。
UITouch 代表触摸在屏幕上的一根手指。可以获取触摸时间和触摸位置。
如何获取 touch 对象。 touches 集合中包含了视图上的所有?势
什么是响应者链
响应者链就是多个响应者对象组成的链
事件的基本概念
UIEvent :事件,是由硬件捕捉的一个表示用户操作设备的对象。
分三类:触摸事件、晃动事件、远程控制事件
触摸事件:用户通过触摸设备屏幕操作对象、输入数据。支持多点触摸,包含 1 个到多个触摸点
UIView 支持触摸事件(因为继承于 UIResponder ),而且支持多点触摸。
需要定义 UIView 子类,实现触摸相关的方法。
touches..began 、
touches..moved 、
touches...ended 、
touches..canceled
手势:有规律的触摸。
UITouch 代表触摸在屏幕上的一根手指。可以获取触摸时间和触摸位置。
如何获取 touch 对象。 touches 集合中包含了视图上的所有?势
[3]什么是响应者链
响应者链就是多个响应者对象组成的链
UIResponder 。响应者类。
iOS 中所有能响应事件(触摸、晃动、远程事件)的对象都是响应者。
系统定义了一个抽象的父类 UIResponder 来表示响应者。其子类都是响应者
硬件检测到触摸操作,会将信息交给 UIApplication ,开始检测。
UIApplication -> window -> viewController -> view -> 检测所有?子视图
最终确认触摸位置,完成响应者链的查询过程
检测到响应者后,实现 touchesBegan:withEvent: 等方法,即处理事件。
如果响应者没有处理事件,事件会向下传递。如果没有响应者处理,
则丢弃触摸事件。
事件处理的顺序与触摸检测查询相反。
触摸的?视图
-> view -> viewController -> window -> UIApplication
响应者链可以被打断。?法完成检测查询过程。
视图类的属性 : userInteractionEnabled 。关闭后能阻断查询过程。
#import "TestView.h" #import "RootView.h" #define KRandomColor arc4random()%256/255.0 @interface TestView() { //开始触摸的点 CGPoint _start; } @end @implementation TestView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor redColor]; } return self; } //开始触摸事件的时候,执行touch 里面的预定的执行事件代码(开始触摸的时候,到这看看) //一次触摸事件发生时,该方法只执行一次 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { //触摸的时候随机颜色(KRandomColor是在延展里定义的随机数) self.backgroundColor = [UIColor colorWithRed:KRandomColor green:KRandomColor blue:KRandomColor alpha:1]; //第一次触摸时候的坐标 _start = [[touches anyObject] locationInView:self]; NSLog(@"点我改变颜色"); } //一次触摸事件尚未结束,会一直调用该方法 //没摸完,就一直摸 -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { //移动的点 CGPoint nowPoint = [[touches anyObject] locationInView:self]; //移动的点减去开始触摸的点 CGFloat x = nowPoint.x - _start.x; CGFloat y = nowPoint.y - _start.y; CGPoint centerPoint = CGPointMake(self.center.x + x, self.center.y + y); self.center = centerPoint; //打印移动时候的坐标 NSLog(@"%@",NSStringFromCGPoint(nowPoint)); } //一次触摸时间结束,执行该方法 //触摸完成 -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"结束了"); } //触摸时间被别的打断, //有人打扰 -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { } @end
原文:http://blog.csdn.net/shichangbu123/article/details/40950693
内容总结
以上是互联网集市为您收集整理的IOS (补充)触摸事件处理全部内容,希望文章能够帮你解决IOS (补充)触摸事件处理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。