如果不设置背景颜色的话 有可能 不响应手势
手势如果不响应
1 看是否添加到了imageview上 如果是 把 self.view.userInteractionEnabled 设置成YES
2 查看是否设置了背景颜色 如果没有设置 设置背景颜色
3 手势冲突 设置手势的优先级 (截获触发事件。手势)设置优先级
requireGestureRecognizerToFail
五大手势:点击(还包括 长按) 拖拽 旋转 捏合 轻扫(都属于手势 继承自UIGestureRecognizer 父类)
1、点击
初始化一个点击的手势(这里初始化会附带一个要触发的方法)
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapAction:)];
设置点击的次数
tap.numberOfTapsRequired = 1;
设置点击手指的个数
tap.numberOfTouchesRequired = 1;
将手势添加到屏幕上
[self.view addGestureRecognizer:tap];
2、长按
初始化
UILongPressGestureRecognizer *longPress =[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPress:)];
最小按下的持续时间
longPress.minimumPressDuration = 1;
手指的个数
longPress.numberOfTouchesRequired = 2;
把手势添加到视图上
[self.view addGestureRecognizer:longPress];
3、拖拽
初始化
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
设置最少的手指个数
pan.minimumNumberOfTouches = 2;
设置最多的手指个数
pan.maximumNumberOfTouches = 2;
添加到屏幕上
[self.view addGestureRecognizer:pan];
4、轻扫
初始化
UISwipeGestureRecognizer *swipe =[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe:)];
轻扫的方向
swipe.direction = UISwipeGestureRecognizerDirectionLeft;
添加到屏幕上
[self.view addGestureRecognizer:swipe];
5、捏合
初始化
UIPinchGestureRecognizer *pinch =[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinch:)];
[self.view addGestureRecognizer:pinch];
6、旋转
UIRotationGestureRecognizer *rotation =[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotation:)];
[self.view addGestureRecognizer:rotation];
设置手势优先级
//需要 轻扫手势执行完 之后 再去执行 拖拽手势
//设置手势优先级
[pan requireGestureRecognizerToFail:swipe];