美文网首页
iOS 手势学习

iOS 手势学习

作者: 顺其sun自然 | 来源:发表于2015-11-24 11:43 被阅读348次

1.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) 中声明,更多方法声明请自行查看

2.UIGestureRecognizer 的继承关系

3.手势状态

手势分为离散型和连续型手势,在以上6种的手势中,只有UITapGestureRecognizer(点按)是离散型手势,即一旦识别就无法取消,而且只会调用一次操作事件。

而离散型手势会多次调用操作事件,并且可以被取消。

手势被识别的过程状态如下:

typedef NS_ENUM(NSInteger, UIGestureRecognizerState) {

UIGestureRecognizerStatePossible,  // 尚未识别是何种手势操作(但可能已经触发了触摸事件),默认状态

UIGestureRecognizerStateBegan,      // 手势已经开始,此时已经被识别,但是这个过程中可能发生变化,手势操作尚未完成

UIGestureRecognizerStateChanged,    // 手势状态发生转变

UIGestureRecognizerStateEnded,      // 手势识别操作完成(此时已经松开手指)

UIGestureRecognizerStateCancelled,  // 手势被取消,恢复到默认状态

UIGestureRecognizerStateFailed,    // 手势识别失败,恢复到默认状态

UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded // 手势识别完成,同UIGestureRecognizerStateEnded

};

4.使用手势的步骤

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

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

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

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

PS:一个手势只能对应一个 View,但是一个 View 可以有多个手势。建议在真机上测试这些手势,模拟器操作不太方便,可能导致认为手势失效的情况。(模拟器测试捏合和旋转手势时,按住 option 键,再用触摸板或鼠标操作)

@property (nonatomic, strong) UISwipeGestureRecognizer *leftSwipeGestureRecognizer;

- (void)addGestureRecognizer {

//第一步,创建滑动手势并且初始化

self.leftSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(rightItemTapped)];

//设置滑动手势是向左滑动时触发

self.leftSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;

//给视图添加上手势

[self.view addGestureRecognizer:self.leftSwipeGestureRecognizer];

}

相关文章

网友评论

      本文标题:iOS 手势学习

      本文链接:https://www.haomeiwen.com/subject/klmrhttx.html