UIGestureRecognizeride
1.是什么?ui
专门用来处理手势识别的类.spa
2.有什么用?代理
这是一个抽象类.经过其具体子类能够处理手势识别,code
具体子类.orm
UITapGestureRecognizer//轻拍
UIPinchGestureRecognizer//缩放
UIRotationGestureRecognizer//旋转
UISwipeGestureRecognizer//轻扫
UIPanGestureRecognizer//拖拽
UIScreenEdgePanGestureRecognizer//轻拍屏幕边缘
UILongPressGestureRecognizer//长按
3.怎么用?对象
>1.建立.blog
>2.添加给须要进行手势识别的视图:addGestureRecognizer继承
>3.添加识别后处理的方法ip
例.
实现代码:
UIRotationGestureRecognizer *rotatetion = [[UIRotationGestureRecognizer alloc]init];
[self.pinkView addGestureRecognizer:rotatetion];
[rotatetion addTarget:self action:@selector(rotationPinkView:)];
- (void)rotationPinkView:(UIRotationGestureRecognizer *)rotation { self.pinkView.transform = CGAffineTransformMakeRotation(rotation.rotation); }
其余的几个手势处理的类的用法格式上是一致的,此处不赘述.
4.UIGestureRecognizer的代理方法.
>1.同时识别多个手势操做.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
说是同时,可是单位时间仍是只能处理一个手势,只不过只要此处返回YES,好比一边旋转一边缩放,旋转完成后,松手,缩放一样有效.
>2.是否容许接收触摸对象,就是是否容许视图对手势作出反应.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;
返回NO,不识别手势操做.
5.注意:
>1.有一个须要注意的地方:当使用旋转的时候,若是用rotate,将当前的transform传递进去,会越转越快.由于roation属性是旋转角度,好比第一次旋转10度,被旋转视图停留在10度的位置,再次旋转,若是在当前基础上旋转10度,也就是至关于初始位置旋转了20度,就是说,调用对应的手势识别方法时,会在10度的基础上再次旋转20度,也就是说你手指虽然旋转了20度,可是被旋转视图实际上旋转了30度.
6.何时用?
UIResponder的touch系列方法也能够处理屏幕的手势,touches系列方法由UIResponder提供,只有继承自UIResponder的类才识别手势,UIView继承自UIResponder,全部的UI控件都继承自UIView,于是全部的控件都具备touches系列方法.
可是有一个致命弱点,touches系列方法只能监听触摸对象在视图上的位置,而没法识别触摸的状态-----轻重缓急,从左到右等方向,等等手势操做,UIGestureRecognizer恰好能够弥补这一点.所以,须要识别手势的状态是可使用UIGestureRecognizer来处理.