当 UIScrollview 和 UIPanGestureRecognizer 手势冲突。默认 只响应 UIScrollview。
如何 响应UIScrollview 的同时,也 响应 UIPanGestureRecognizer 呢。
答:设置 响应UIScrollview 的手势代理
LZScrollViewDelegate: UIGestureRecognizerDelegate {
/// 根据手势优先级决定行为; 返回 true 允许两个手势同时识别,手势事件会一直往下传递
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if self.fp_scrollViewPopGestureRecognizerEnable, self.contentOffset.x <= 0, let gestureDelegate = otherGestureRecognizer.delegate {
if gestureDelegate.isKind(of: FullscreenPopGesture_NTSRecognizerDelegate.self) {
return true
}
}
return false
}
}
上述解决办法有时会出现一个bug。 就是 UIPanGestureRecognizer 在滑动时,UIScrollview 也会滑动。
设置手势优先级
self.panGestureRecognizer.require(toFail: otherGestureRecognizer)//设置手势的优先级高于scroll的手势