//
//  SelectiveDeliveryEventsView.swift

//
//  Created by Leon on 2025/7/27.
//

import UIKit

/// 选择性传递View，常用做容器，只上方的一些控制事件可响应。（✅允许Control事件）
class SelectiveDeliveryEventsView: UIView {
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        // 1. 如果 view 是隐藏的或不交互，返回 nil
        if self.isHidden || self.alpha < 0.01 || !self.isUserInteractionEnabled {
            return nil
        }

        // 2. 遍历子视图，看看是否有 UIControl 响应点击
        for subview in subviews.reversed() {
            let convertedPoint = subview.convert(point, from: self)
            if let hitView = subview.hitTest(convertedPoint, with: event) {
                if hitView is UIControl {
                    return hitView // 点到了控件，返回控件自身，停止传递
                }
            }
        }

        // 3. 没有控件响应，返回 nil 让事件传递给父视图
        return nil
    }
}
