Button Swift 3 iOS-覆盖HitTest,不允许子视图在其外部接收触摸';s SuperView';界

Button Swift 3 iOS-覆盖HitTest,不允许子视图在其外部接收触摸';s SuperView';界,button,view,cgrect,bounds,touches,Button,View,Cgrect,Bounds,Touches,我有一个collectionView单元格,它有一个来自故事板的imageView和一个以编程方式添加的deleteButton(红色X),该按钮超出了单元格的边界X:-12,y:-18。我试图覆盖hitTest以接收单元格边界以外的触摸,但它不起作用。但是,当按钮(或其任何部分)在单元格边界内时,我能够触发按钮上的事件。在故事板的imageView中,我已选中IsUserInActionEnabled,在单元格类中,我已在deleteButton和单元格本身上启用它。我在单元格和imageVi

我有一个collectionView单元格,它有一个来自故事板的imageView和一个以编程方式添加的deleteButton(红色X),该按钮超出了单元格的边界
X:-12,y:-18
。我试图覆盖
hitTest
以接收单元格边界以外的触摸,但它不起作用。但是,当按钮(或其任何部分)在单元格边界内时,我能够触发按钮上的事件。在故事板的imageView中,我已选中IsUserInActionEnabled,在单元格类中,我已在deleteButton和单元格本身上启用它。我在单元格和imageView上还有clipsToBounds=false

我确实注意到,当我打印出子视图时,唯一打印的视图是imageView。也许这就是问题所在

代码如下:

class MyCell: UICollectionViewCell {

    @IBOutlet weak var imageView: UIImageView!

    var deleteButton: UIButton!
    var deleteButtonImg: UIImage!

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        deleteButton = UIButton(frame: CGRect(x: -12, y: -18, width: frame.size.width/4, height: frame.size.width/4))

        deleteButtonImg = UIImage(named: "red-x")!
        deleteButton.setImage(deleteButtonImg, for: .normal)

        self.isUserInteractionEnabled = true
        deleteButton.isUserInteractionEnabled = true
        contentView.addSubview(deleteButton)
    }

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        if (!self.clipsToBounds && !self.isHidden && self.alpha > 0.0) {

            for view in self.subviews.reversed() {
                print(".......\(subviews.description)")
                let subPoint = view.convert(point, from: self)
                let result = view.hitTest(subPoint, with: event)

                if (result != nil){
                    return result
                }
            }
        }
        return nil;
    }
尽管我正在覆盖命中测试,为什么我不能接收到触碰事件