我在视图中同时使用了水龙头和平移手势。该视图有一个UICollectionView
,我试图调用didSelectItemAt
,但不会调用该方法。
我试过以下,但没有运气。
override func viewDidLoad() {
panGesture.delegate = self
tapGesture.delegate = self
}
extension AddNotebookViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
有人知道这个问题是什么吗?
答案 0 :(得分:1)
正如您已经猜到的那样,问题是背景视图的手势识别器会吞下选择集合视图单元格的点击。要解决此问题,请在视图控制器中实现此手势识别器委托方法:
func gestureRecognizerShouldBegin(_ gr: UIGestureRecognizer) -> Bool {
let p = gr.location(in: self.view)
let v = self.view.hitTest(p, with: nil)
return v == gr.view
}
结果是,如果手势在集合视图中,则背景视图的手势识别器将不会开始,并且将能够进行正常选择。