美文网首页
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