美文网首页
iOS手势冲突

iOS手势冲突

作者: 不语03 | 来源:发表于2018-07-17 17:39 被阅读0次

手势冲突,在iOS开发过程中,这是一个很常见的问题。举个例子:在自定义一个相册的时候,就要用到大量的手势,左滑、右滑、捏合、拖动、长按等等;这些手势都需要加载到UIImageView上(UIImageView必须开启用户交互,设置userInteractionEnabled=YES,在iOS中UILabel、UIImageView的userInteractionEnabled默认都是NO,UIButton、UITextField、UIScrollView、UITableView等默认都是YES),这是就会遇到手势冲突的问题。下面,给出一些尝试过的解决方法:

//解决在图片上滑动时拖动手势和轻扫手势的冲突

[panGesture requireGestureRecognizerToFail:swipeGestureToRight];

[panGesture requireGestureRecognizerToFail:swipeGestureToLeft];

//解决拖动和长按手势之间的冲突

[longPressGesture requireGestureRecognizerToFail:panGesture];

- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer;这个方法可以帮助解决手势冲突问题,这个方法可以指定某个手势执行的前提是另一个手势失败才会识别执行。

通过下面的方法可以实现同一视图的多个手势操作:

1、遵循UIGestureRecognizerDelegate

2、重写相应代理方法

3、指定手势代理者

4、利用代理方法

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

这个代理方法默认返回NO,会阻断继续向下识别手势,如果返回YES则可以继续向下传播识别。

相关文章

网友评论

      本文标题:iOS手势冲突

      本文链接:https://www.haomeiwen.com/subject/oqygpftx.html