swift 自定义View里子控件位置超出父控件,响应点击事件办法

    //超出部分响应点击事件
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        if (!self.isUserInteractionEnabled || self.isHidden || self.alpha <= 0.01 ){
            return nil
        }
        let resultView  = super.hitTest(point, with: event)
        if resultView != nil {
            return resultView
        }else{
            for subView in self.subviews.reversed() {
                // 这里根据层级的不同,需要遍历的次数可能不同,看需求来写,我写的例子是一层的
                let convertPoint : CGPoint = subView.convert(point, from: self)
                let hitView = subView.hitTest(convertPoint, with: event)
                if (hitView != nil) {
                    return hitView
                }
            }
        }
        return nil
    }
    ```

你可能感兴趣的:(swift 自定义View里子控件位置超出父控件,响应点击事件办法)