iOS:仅在iOS 13上不触发点击事件

问题描述 投票:2回答:1

我在旧应用程序上的按钮单击事件有问题。对于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))

ios xib ios13 ibaction
1个回答
2
投票

如果您提供完整的代码,但是根据此处提供的代码,这将是很好的建议。

由于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
}
© www.soinside.com 2019 - 2024. All rights reserved.