美文网首页
(Swift)处理子视图超出父视图部分,仍可点击

(Swift)处理子视图超出父视图部分,仍可点击

作者: 布呐呐u | 来源:发表于2021-03-25 18:04 被阅读0次

    一)问题场景

    如下图所示,黄色视图为父视图,红色为子视图,
    默认情况下,红色视图超出黄色视图部分,点击无效;


    截屏2021-03-25 下午6.00.46.png

    二)解决方案

    //重写父视图中如下方法
    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
    }
    

    相关文章

      网友评论

          本文标题:(Swift)处理子视图超出父视图部分,仍可点击

          本文链接:https://www.haomeiwen.com/subject/zrsrhltx.html