iOS:向容器视图添加UITapGestureRecognizer拦截UICollectionView的didSelectItemAtIndexPath方法

The*_*mad 7 ios uitapgesturerecognizer uicollectionview swift

我在我的ViewController中添加了一个UITapGestureRecognizer用于Content View在点击内容视图时关闭键盘的一个.

问题是我有一个UICollectionView内部我的内容视图,并设置UITapGestureRecognizer拦截我的水龙头UICollectionView.

如何让我UICollectionView的水龙头通过,以便该didSelectItemAtIndexPath方法再次点火?

func setupGestureRecognizer() {
    let dismissKeyboardTap = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
    contentView.addGestureRecognizer(dismissKeyboardTap)
}

func dismissKeyboard() {
    contentView.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)

The*_*mad 16

解决此问题的方法是添加.cancelsTouchesInView = false到您的UITapGestureRecognizer.

这允许其他视图内的UITableViewCell触摸通过,例如触摸.

func setupGestureRecognizer() {
    let dismissKeyboardTap = UITapGestureRecognizer(target: self, action: "dismissKeyboard")
    dismissKeyboardTap.cancelsTouchesInView = false
    contentView.addGestureRecognizer(dismissKeyboardTap)
}

func dismissKeyboard() {
    contentView.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)

  • 嗯,这在 Swift 4.2 iOS 12 上对我不起作用:( (3认同)