};
左图为 短手势 的状态转变,右图为 长手势 的状态转变
三、UIGestureRecognizer方法
复制代码
#pragmX mark 添加触摸执行事件
- (void)addTarget:(id)target action:(SEL)action;
#pragma mark 移除触摸执行事件
- (void)removeTarget:(id)target action:(SEL)action;
#pragma mark 触摸点的个数(同时触摸的手指数)
- (NSUInteger)numberOfTouches;
#pragma mark 在指定视图中的相对位置
- (CGPoint)locationInView:(UIView*)view;
#pragma mark 触摸点相对于指定视图的位置
- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView*)view;
#pragma mark 指定一个手势需要另一个手势执行失败才会执行
- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer;
四、UIGestureRecognizer使用
复制代码
# 创建手势识别器对象
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
# 设置手势识别器对象的具体属性
tap.numberOfTapsRequired = 2; // 连续敲击2次
tap.numberOfTouchesRequired = 2;// 需要2根手指一起敲击
# 添加手势识别器到对应的view上
[self.myView addGestureRecognizer:tap];
# 监听手势的触发
[tap addTarget:self action:@selector(tapView:)];
五、多手势冲突
在iOS中,如果一个手势A的识别部分是另一个手势B的子部分,默认情况下A就会先识别,B就无法识别了,
比如拖动手势A和轻扫手势B,轻扫手势只在手势结束状态才能执行,而拖动手势在手势开始的时候执行,这两个手势一起触发,轻扫手势就成了牺牲品。
解决手势冲突,就是利用一个方法:
复制代码
-(void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer











