IOS手势检测
来源:互联网 发布:淘宝的耐克鞋是正品吗 编辑:程序博客网 时间:2024/06/06 02:48
1.响应者链
当用户点击屏幕时,会产生一个响应事件。这个事件一般由当前的第一响应者First responder(即当前用户交互的控件,一般为UIView或者其继承类)进行监听处理。如果该控件不处理点击事件,那事件就会被传播到他对应的视图控制器,如果视图控制器也不做处理,就会被传播给控件的父视图。
响应链的传播如下:
First Responder -> First Responder的ViewController -> 父视图 -> 父视图的ViewController -> UIWindow -> UIApplication -> UIApplication Delegate -> 丢弃
在某个控件截获事件时,也可以通过代码进行手动的传递(详情可以自行在开发文档搜索):
self.nextResponder //返回nil或者下一个响应object
2.响应事件
当用户触碰屏幕时,会分别响应控件的以下4个方法。我们可以利用这个四个方法来自定义捕捉用户的手势行为,利用touches获得点击位置,event获得事件类型
//当用户手指开始触碰窗口时响应该方法-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ NSLog(@"touch!");}/*//当用户手指在控件上移动时触发-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;//当用户手指结束触碰时触发-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;//当系统事件终止了触碰事件时触发-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;*/
3. 使用IOS自带的手势处理器
对于一些常见的手势如点击,捏合,横扫等,苹果提供了自带的API可以直接检测这些手势并响应。
//点击UITapGestureRecognizer;//捏合UIPinchGestureRecognizer;//旋转UIRotationGestureRecognizer;//扫UISwipeGestureRecognizer;//拖动UIPanGestureRecognizer;//还有其他这些处理器都是继承了UIGestureRecognizer的子类。
手势处理器的使用一般分为三个步骤:创建,设置,添加。下面以UISwipeGestureRecognizer为例:
//设置视图支持用户交互 self.view.userInteractionEnabled = true; //设置视图支持多点触碰 self.view.multipleTouchEnabled = true; //创建上下左右四个方向手势处理器 for(int i=0; i<4; i++){ //创建处理轻扫手势的手势处理器 UISwipeGestureRecognizer* gesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handleSwipe:)]; //设置处理器只处理一个手指的触碰 gesture.numberOfTouchesRequired = 1; //指定轻扫方向 gesture.direction = 1<<i; //添加该控制器 [self.view addGestureRecognizer:gesture]; }//手势触发方法- (void)handleSwipe:(UISwipeGestureRecognizer*)gesture { //获取轻扫手势 NSUInteger direction = gesture.direction; //输出方向 switch (direction) { case UISwipeGestureRecognizerDirectionLeft: NSLog(@"Left"); break; case UISwipeGestureRecognizerDirectionRight: NSLog(@"Right"); break; case UISwipeGestureRecognizerDirectionUp: NSLog(@"Up"); break; case UISwipeGestureRecognizerDirectionDown: NSLog(@"Down"); break; default: break; } }
4. 自定义手势处理器
可以创建一个新类来继承UIGestureRecognizer,并重写4个touches的响应事件,在适当的时候设置类对象的属性state为UIGestureRecognizerStateCancelled或者UIGestureRecognizerStateEnded(将会触发处理手势的方法)来表示自定义手势的识别的成功与否即可。
附上一个用上下左右轻扫手势控制移动的简易贪吃蛇:
Snake
阅读全文
0 0
- IOS的手势检测
- IOS手势检测
- Swift iOS- 手势检测详解
- IOS学习之手势检测
- IOS 应用检测碰擦手势分析
- 手势检测
- 手势检测
- 手势检测
- 手势检测
- iOS开发:处理多点触摸与手势检测
- iOS开发:手势解锁(带路线相交检测)
- iOS开发:手势解锁(带路线相交检测)
- iOS手势
- ios 手势
- IOS手势
- iOS手势
- iOS手势
- ios 手势
- golang xml解析不确定是否存在的元素
- JavaNIO全解
- TX2+rplidar+cartographer
- 阿里云maven镜像
- TCP和UDP的最完整的区别
- IOS手势检测
- Shell语句 基本用法
- 学习
- SpringBoot——创建一个简单的SpringBoot项目
- JQuery自定义$()使用
- 宏定义详解
- 生产者/消费者模式
- 【算法】判断是否是二叉搜索树的后序遍历序列
- Spring MVC中的DispatcherServlet作用