今天在做一个功能的时候需要将部分view包含在一个大的容器,发现在这样做后,在这个打容器下层的View的点击事件完全失效了,于是就想着把容器的userInteractionEnabled设为false,然后试了一下发现这个时候这个打容器里的View的点击事件又不生效了,于是发现通过userInteractionEnabled这个并不妥当,所以就通过网络查找资料发现大容器的userInteractionEnabled依然设为YES,然后通过重写这个大容器的如下方法就可以实现点击事件的穿透
“`swift
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let hitview = super.hitTest(point, with: event)
if hitview == self {
return nil
}
return hitview
}
“`