首页 > 解决方案 > 与 UIKit/Swift 重叠的 UIView 和交互性问题

问题描述

我正在构建一个面向 iOS 的 Swift 和 UIKit 界面。我所有的观点都是以编程方式构建的。我遇到一个问题,即 aUIView与另一个重叠UIView(但没有完全覆盖它)阻止任何点击事件通过。布局如下所示:

底部的导航栏是自定义视图,功能正常。点击这些按钮会更改其后面的活动视图(当前视图是TextViewSQL 语法突出显示的)。上面是 a UILabel(带有“已连接”文本)和 a UIView(带有渐变背景的圆圈)。我将此元素称为“ButtonView”,将标签称为“StatusView”。“StatusView”锚定到导航栏和封闭视图,“ButtonView”锚定到导航栏和“StatusView”。

这是相关的布局代码:

            view.addSubview(navBar!)
            view.addSubview(status)
            view.addSubview(button)

            status.translatesAutoresizingMaskIntoConstraints = false
            status.layer.masksToBounds = true
            status.text = "Example String"
            status.textColor = .white
            status.layer.cornerRadius = 20.0
            status.layoutMargins = UIEdgeInsets(top: 10.0, left: 10.0, bottom: 10.0, right: 10.0)

            button.translatesAutoresizingMaskIntoConstraints = false
            button.layer.masksToBounds =    true
            button.layer.cornerRadius = 35.0
    //        button.isUserInteractionEnabled = false
    //        button.backgroundColor = .white

            NSLayoutConstraint.activate([
                status.bottomAnchor.constraint(equalTo: navBar!.topAnchor, constant: -10.0),
                status.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10.0),
                status.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -90.0),
                status.heightAnchor.constraint(equalToConstant: 50.0),
                button.bottomAnchor.constraint(equalTo: navBar!.topAnchor, constant: -10.0),
                button.leadingAnchor.constraint(equalTo: status.trailingAnchor, constant: 10.0),
                button.widthAnchor.constraint(equalToConstant: 70.0),
                button.heightAnchor.constraint(equalToConstant: 70.0)
                ])

预期的行为是即使存在“ButtonView”,仍然可以点击和编辑 SQL 视图。但是,当“ButtonView”出现时,SQL 视图将无法获得焦点。如果“ButtonView”的isUserInteractionEnabled属性设置为false或“ButtonView”被删除,一切正常。“StatusView”似乎没有任何不利影响,无需编辑其任何属性。(请注意,当前没有分配给“ButtonView”的手势行为,这不是 a UIButton)。调试视图似乎没有显示任何重叠层:

理想情况下,我想最终在这个视图中添加一个手势识别器,但是想知道这是否会永远禁止我访问后台更远的视图?是否可以像这样重叠交互式视图,还是我以某种方式搞砸了响应者链?

标签: iosswiftuiviewuikit

解决方案


推荐阅读