美文网首页
超出视图外控件的点击事件

超出视图外控件的点击事件

作者: 山有木枝壮 | 来源:发表于2018-06-13 10:23 被阅读12次

    设置父视图的clipsToBounds属性为true,子视图允许超出父视图布局,这时的子视图是无法点击的


    子视图超出父视图

    父视图重写hitTest方法,可以将事件传递到子视图

     /// 超出视图外按钮的点击事件处理
        ///
        /// - Parameters:
        ///   - point: 点击的点
        ///   - event: 事件
        /// - Returns: 返回的按钮
        override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
            var view = super.hitTest(point, with: event)
            if view == nil {
                for subView in self.subviews {
                    let p = subView.convert(point, from: self)
                    if subView.bounds.contains(p) {
                        view = subView
                    } 
                }
            }
            return view
        }
    

    相关文章

      网友评论

          本文标题:超出视图外控件的点击事件

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