我在我的视图中同时使用了轻击和平移手势。该视图有一个UICollectionView
,我试图在其中调用didSelectItemAt
,但是该方法并未被调用。
我已经尝试了以下方法,但没有成功。
override func viewDidLoad() {
panGesture.delegate = self
tapGesture.delegate = self
}
extension AddNotebookViewController: UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
有谁知道这个问题可能是什么吗?
发布于 2018-05-29 08:30:06
正如您已经猜到的,问题在于背景视图的手势识别器接受了选择集合视图单元格的点击。要解决此问题,请在视图控制器中实现此手势识别器委托方法:
func gestureRecognizerShouldBegin(_ gr: UIGestureRecognizer) -> Bool {
let p = gr.location(in: self.view)
let v = self.view.hitTest(p, with: nil)
return v == gr.view
}
结果是,如果手势在集合视图中,背景视图的手势识别器将不会开始,并且将能够进行正常选择。
https://stackoverflow.com/questions/50574597
复制相似问题