IOS中多手势之间的冲突和解决办法

2025-05-29 0 46

IOS中多手势之间的冲突和解决办法

UIImageView默认是不支持交互的,也就是userInteractionEnabled=NO ,因此要接收触摸事件(手势识别),必须设置userInteractionEnabled=YES(在iOS中UILabel、UIImageView的userInteractionEnabled默认都是NO,UIButton、UITextField、UIScrollView、UITableView等默认都是YES)。

iOS中,如果一个手势A的识别部分是另一个手势B的子部分时,默认情况下A就会先识别,B就无法识别了。要解决这个冲突可以利用- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer;方法来完成。这个方法可以指定某个手势执行的前提是另一个手势失败才会识别执行。

?

1

2

3

4

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

[panGesture requireGestureRecognizerToFail:swipeGestureToRight];

[panGesture requireGestureRecognizerToFail:swipeGestureToLeft];

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

[longPressGesture requireGestureRecognizerToFail:panGesture];

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

  1. 遵循UIGestureRecognizerDelegate,
  2. 重写相应的方法,
  3. 指定手势代理者
  4. 利用代理的方法
?

1

2
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer

shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

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

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 IOS中多手势之间的冲突和解决办法 https://www.kuaiidc.com/90584.html

相关文章

发表评论
暂无评论