我在旧应用程序上的按钮单击事件有问题。对于iOS版本<13,一切正常,但是在iOS 13上,单击按钮无效。
这是生成按钮的代码:
override func layoutSubviews() {
super.layoutSubviews()
var offsetY = CGFloat(0)
for view in authenticationViews {
view.button.frame = CGRect(x: 0, y: offsetY, width: frame.size.width, height: buttonHeight)
offsetY += buttonsDistance + buttonHeight
addSubview(view.button)
}
height = offsetY
}
我认为约束可能存在问题,但是我是iOS的新手,我不知道从该错误中了解什么以及应该如何解决:
将尝试通过打破约束来恢复(null)((null),(null))
如果您提供完整的代码,但是根据此处提供的代码,这将是很好的建议。
由于layoutSubviews
功能可以被多次调用,因此您应该将它们移到viewDidLoad
内。
override func viewDidLoad() {
...
for view in authenticationViews {
addSubview(view.button)
}
}
要根据布局更改来更新视图的框架,必须将其放入viewDidLayoutSubviews
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
var offsetY = CGFloat(0)
for view in authenticationViews {
view.button.frame = CGRect(x: 0, y: offsetY, width: frame.size.width, height: buttonHeight)
offsetY += buttonsDistance + buttonHeight
}
height = offsetY
}