前言:UI控件有时会出现手势动作冲突,需要提高某些手势动作的优先级,如:双击点赞会与单击暂停所冲突,则需要提高双击点赞的优先级
使用的方法:
///firstGestureRecognizer为优先级低的手势动作
///secondGestureRecognizer为优先级高的手势动作
///方法介绍:当优先级高的手势失败时才会执行优先级低的手势动作
firstGestureRecognizer.require(toFail: secondGestureRecognizer)
方法使用:
- 双击手势优先于单击手势
let doubleTap = UITapGestureRecognizer(target: self, action: #selector(doubleTapContentView))
doubleTap.numberOfTapsRequired = 2
let singleTap = UITapGestureRecognizer(target: self, action: #selector(singleTapContentView))
contentView.bgView.addGestureRecognizer(doubleTap)
contentView.bgView.addGestureRecognizer(singleTap)
singleTap.require(toFail: doubleTap)
- Cell手势操作优先于UITableView/UIScrollView滑动操作
/// Cell中需要进行的设置:
var tapGesture: UITapGestureRecognizer!
var leftSwipeGesture: UISwipeGestureRecognizer!
tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapBgView))
bgView.addGestureRecognizer(tapGesture)
leftSwipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(swipeGestureAction(gesture:)))
leftSwipeGesture.direction = .left
bgView.addGestureRecognizer(leftSwipeGesture)
/// UIScrollView:
myScrollView.panGestureRecognizer.require(toFail: cell.tapGesture)
myScrollView.panGestureRecognizer.require(toFail: cell.leftSwipeGesture)
/// UITableView
myTableView.panGestureRecognizer.require(toFail: cell.tapGesture)
myTableView.panGestureRecognizer.require(toFail: cell.leftSwipeGesture)
整理不易,望大家多多点赞收藏!感谢大家!