我正在Swift和UIKit中针对iOS构建接口。我所有的观点都是以编程方式构建的。我遇到一个问题,其中一个UIView
与另一个UIView
重叠(但没有完全覆盖它)阻止了任何轻击事件通过。布局如下所示:
底部的导航栏是一个自定义视图,功能正常。轻触这些按钮可更改其后的活动视图(当前视图为带有SQL语法突出显示的TextView
)。其上方是UILabel
(带有文本“ Connected”)和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”的手势行为,并且不是UIButton
)。调试视图似乎没有显示任何重叠的层:
理想情况下,我想最终向该视图添加手势识别器,但是想知道这是否将永远禁止我访问后台的视图吗?是否可以像这样重叠交互式视图,或者我是否以某种方式弄乱了响应者链?