(Swift)处理子视图超出父视图部分,仍可点击
2021-03-25 本文已影响0人
布呐呐u
一)问题场景
如下图所示,黄色视图为父视图,红色为子视图,
默认情况下,红色视图超出黄色视图部分,点击无效;

二)解决方案
//重写父视图中如下方法
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView?
三)源码示意
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
let supView = super.hitTest(point, with: event)
for subView in self.subviews {
//将父类point点转换成子类坐标系下的点
let convertedPoint = subView.convert(point, from: self)
let targetView = subView.hitTest(convertedPoint, with: event)
if targetView != nil {
return targetView
}
}
return supView
}