iOS开发之手势识别

2020-01-15 14:57:01王冬梅
本文给大家汇总介绍了在IOS开发中我们经常需要用到的手势识别的相关知识,非常的细致全面,有需要的小伙伴可以参考下  

一、UIGestureRecognizer简单介绍

我们已经学习了触摸事件处理,但触摸事件处理起来很麻烦,每个触摸事件处理都需要实现3个touches方法,比较繁琐,实际上我们可以使用更加简单的触摸事件处理操作,那就是 手势识别UIGestureRecognizer 。

手势识别操作基类UIGestureRecognizer不能直接使用,我们常使用的是它的子类,这些手势操作类都继承自UIGestureRecognizer类

常用手势识别子类:

点按手势 UITapGestureRecognizer
捏合手势 UIPinchGestureRecognizer
拖动手势 UIPanGestureRecognizer
轻扫手势 UISwipeGestureRecognizer【4个方向分离】
旋转手势 UIRotationGestureRecognizer
长按手势 UILongPressGestureRecognizer

二、UIGestureRecognizer属性

对象属性:

 

复制代码
@property (nonatomic , readonly) UIGestureRecognizerState state;/*< 手势状态 */
@property (nonatomic , getter=isEnabled) BOOL enabled;/*< 手势是否可用 */
@property (nonatomic , readonly) UIView *view;/*< 触发手势的视图 */
@property (nonatomic , assign) BOOL delaysTouchesBegan;/*< 手势识别失败前不执行触摸开始事件,默认为NO */

 

手势识别状态state:

 

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