iOS: события клика не запускаются только на iOS 13 - PullRequest
2 голосов
/ 15 апреля 2020

У меня проблема с событиями нажатия кнопки в старом приложении. Все работает нормально для iOS версий <13, но на iOS 13 нажатия кнопок не работают. </p>

Это код, который генерирует кнопки:

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, и я не знаю, что понять из этой ошибки и как ее исправить:

Попытка восстановления после сбоя ограничение (ноль) ((ноль), (ноль))

1 Ответ

2 голосов
/ 29 апреля 2020

Было бы замечательно, если бы вы предоставили полный код, но на основе приведенного здесь кода приведены предложения.

Поскольку функцию 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
}
...