UIGestureRecognizer

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来处理.

相关文章
相关标签/搜索