美文网首页
swift UICollectionView UITableVi

swift UICollectionView UITableVi

作者: 喵喵粉 | 来源:发表于2020-03-06 16:02 被阅读0次

在自定义view中添加了点击手势,那点击UICollectionViewUITableViewcell时不响应其didSelect代理方法,原因是手势冲突了

2种方法

  • 给view设置restorationIdentifier
let lbTap = UITapGestureRecognizer(target: self, action: #selector(xxx))
lbTap.delegate = self
vBg.addGestureRecognizer(lbTap)
vBg.restorationIdentifier = "vBg"
  • 在手势代理中判断view的类型
//
// MARK: - cell item点击和 vBg的点击冲突
//
extension XXXView: UIGestureRecognizerDelegate {
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        
        ///第一种 1.设置view的identify
        if let identify = touch.view?.restorationIdentifier {
            return identify == "vBg"
        }
        
        ///第二种 2.判断view的类型
        let clsTouch = NSStringFromClass((touch.view?.classForCoder)!)
        
        var clsSuper = ""
        if let supCls = touch.view?.superview, let suppCls = supCls.superview {
            clsSuper = NSStringFromClass(suppCls.classForCoder)
        } else {
            return true
        }
        
        ///UICollectionView UITableView就拦截点击事件
        if clsTouch.hasPrefix("UITableView") || clsTouch.hasPrefix("UICollectionView") ||
            clsSuper.hasPrefix("UITableView") || clsSuper.hasPrefix("UICollectionView") {
            return false
        }
        
        return true
    }
}

相关文章

网友评论

      本文标题:swift UICollectionView UITableVi

      本文链接:https://www.haomeiwen.com/subject/xuairhtx.html