手势识别:手机设备判断使用者的屏幕是手势操作
基础类:UIGestureRecognizer
所属框架:UIKit
1. 基本手势类型(UIGestureRecognizer子类型)
-轻击(UITapGestureRecognizer)
@property NSUInteger numberOfTapsRequired;//设置单击还是双击
@property NSUInteger numberOfTouchsRequired;//设置要求几根手指
-捏合(UIPinchGestureRecognizer)
@property CGFloat scale;
-旋转(UIRotationGestureRecognizer)
@property CGFloat rotation;
-轻扫(UISwipeGestureRecognizer):快速移动,是用于监测滑动的方向
@property UISwipeGestureRecognizerDirection direction;
@property NSUInteger numberOfTouchesRequire;
-拖拽(UIPanGestureRecognizer):拖移,慢速移动,用于监测偏移的量
-(CGPoint)translationInView:(UIView*)view;
-(void)setTranslation:(CGPoint)translation inView:(UIView*)view;
-长按(UILongPressGestureRecognizer)
2. 手势状态
@property (readonly) UIGestureRecognizerState state;
默认是possible状态,当非连续的手势发生时,状态会变为recognized;
当连续有效的手势发生时,状态会变为began;
如果手势持续发生,状态会变为changed,然后最终变为ended;
当recognizer发现手势取消的时候会收到cancelled状态;
要注意任何时候手势状态都又可能变为failed,所以应该持续监控;
状态类型如下:
UIGestureRecognizerStatePossible
UIGestureRecognizerStateBegan
UIGestureRecognizerStateChanged
UIGestureRecognizerStateEnded
UIGestureRecognizerStateCancelled
UIGestureRecognizerStateFailed
UIGestureRecognizerStateRecognized
3. 代码实现
两步:
1. 给UIVIew添加gesture recognizer
UIPanGestureRecognizer* pangr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
[self.view addGestureRecognizer:pinch];
2. 实现手势事件的处理函数
-(void)pan:(UIPanGestureRecognizer*)recognizer {
CGPoint point = [recognizer translationInView:self.view];
self.view.transform = CGAffineTransformTranslate(self.view.transform, point.x, point.y);
[recognizer setTranslation:CGPointZero inView:self.view];
}
}