博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 手势操作:拖动、捏合、旋转、点按、长按、轻扫、自定义
阅读量:6277 次
发布时间:2019-06-22

本文共 1672 字,大约阅读时间需要 5 分钟。

1、UIGestureRecognizer 介绍

手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性。

iOS 系统在 3.2 以后,他提供了一些常用的手势(UIGestureRecognizer 的子类),开发者可以直接使用他们进行手势操作。

  • UIPanGestureRecognizer(拖动)

  • UIPinchGestureRecognizer(捏合)

  • UIRotationGestureRecognizer(旋转)

  • UITapGestureRecognizer(点按)

  • UILongPressGestureRecognizer(长按)

  • ​UISwipeGestureRecognizer(轻扫)

另外,可以通过继承 UIGestureRecognizer 类,实现自定义手势(手势识别器类)。

自定义手势时,需要 #import <UIKit/UIGestureRecognizerSubclass.h>,一般需实现如下方法:

- (void)reset;- (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;//以上方法在分类 UIGestureRecognizer (UIGestureRecognizerProtected) 中声明,更多方法声明请自行查看

 

手势状态枚举如下:

1 typedef NS_ENUM(NSInteger, UIGestureRecognizerState) {2     UIGestureRecognizerStatePossible,   // 尚未识别是何种手势操作(但可能已经触发了触摸事件),默认状态3     UIGestureRecognizerStateBegan,      // 手势已经开始,此时已经被识别,但是这个过程中可能发生变化,手势操作尚未完成4     UIGestureRecognizerStateChanged,    // 手势状态发生转变5     UIGestureRecognizerStateEnded,      // 手势识别操作完成(此时已经松开手指)6     UIGestureRecognizerStateCancelled,  // 手势被取消,恢复到默认状态7     UIGestureRecognizerStateFailed,     // 手势识别失败,恢复到默认状态8     UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded // 手势识别完成,同UIGestureRecognizerStateEnded9 };

使用手势很简单,分为三步:

  1. 创建手势识别器对象实例。创建时,指定一个回调方法,当手势开始,改变、或结束时,执行回调方法。

  2. 设置手势识别器对象实例的相关属性(可选部分)

  3. 添加到需要识别的 View 中。每个手势只对应一个 View,当屏幕触摸在 View 的边界内时,如果手势和预定的一样,那就会执行回调方法。

UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];[imgVCustom addGestureRecognizer:recognizer];

 

转载地址:http://zyfva.baihongyu.com/

你可能感兴趣的文章
Oracle OCP之硬解析在共享池中获取内存锁的过程
查看>>
在imageView依次加入7个手势, 1.点击哪个button,往imageView上加入哪个手势.(保证视图上仅仅有一个手势). 2.轻拍:点击视图切换美女图片.(imageView上首先...
查看>>
2 怎样解析XML文件或字符串
查看>>
linux驱动编写之poll机制
查看>>
hdu 1874 畅通project续
查看>>
kvm克隆
查看>>
系统理论
查看>>
单点登录系统功能调试界面
查看>>
H5结合百度map实现GPS定位
查看>>
一起学习Maven
查看>>
Codeforces 474 D. Flowers
查看>>
Lightoj 1043 - Triangle Partitioning【二分】
查看>>
Spring Boot 概念知识
查看>>
大杂烩 -- HashMap、HashTable、ConCurrentHashMap 联系与区别
查看>>
android 自己定义标签的使用,实现扁平化UI设计
查看>>
This Activity already has an action bar supplied by the window decor
查看>>
SpringMVC之HandlerMethodArgumentResolver和<mvc:argument-resolvers>
查看>>
【LeetCode-面试算法经典-Java实现】【033-Search in Rotated Sorted Array(在旋转数组中搜索)】...
查看>>
tengine2.1.0RPM包制做 tengine-2.1.0.spec配置
查看>>
Java扫描二维码进行会议签到思路
查看>>