有两个自定义视图 - viewA和viewB.ViewB是viewA中添加的一个小视图。在第一个视图A填充整个屏幕。 ViewB位于viewA的底部(屏幕外)。单击viewA中的按钮时,viewB底部常量约束将为-100,因此viewB将显示在屏幕底部。但是viewB中有一个按钮没有响应它的选择器。这是我的代码:
在ViewA中
let viewB: ViewB = {
let view = ViewB(
view.setup()
return view
}()
viewB约束:
viewB.snp.makeConstraints { (make) in
make.trailing.leading.equalTo(self)
make.height.equalTo(100)
make.top.equalTo(self.snp.bottom)
}
单击按钮以唤醒viewB
UIView.animate(withDuration: 0.5) {
self.snp.updateConstraints({ (make) in
make.bottom.equalTo(-100)
})
}
self.layoutIfNeeded()
在viewB中:
class ViewB: UIView {
let b: UIButton = {
let button = UIButton(type: UIButtonType.custom)
button.addTarget(self, action: #selector(btnClicked), for: UIControlEvents.touchUpInside)
button.backgroundColor = UIColor.green
button.setTitle("Button", for: .normal)
return button
}()
func btnClicked() {
print("btnClicked")
}
func setup() {
addSubview(b)
b.snp.makeConstraints { (make) in
make.leading.top.bottom.equalTo(self)
make.width.equalTo(100)
}
}
}
答案 0 :(得分:1)
您的代码本身运行正常。所以问题可能就是按钮被另一个采取触摸操作的视图覆盖。您可以使用视图调试器对其进行测试,或者提供项目链接,以便我们中的任何一个人可以查看正在进行的操作。
答案 1 :(得分:0)
我认为,你的视图已超出其超级视图或任何其他视图即将出现在其上层。请看这个
superview.clipsToBounds : YES