Анимация UIView не работает внутри события KeyboardWillShowNotification - PullRequest
1 голос
/ 29 февраля 2020

Я пытаюсь анимировать вид во время показа / скрытия клавиатуры, но он не работает, анимация использует время анимации клавиатуры вместо моего.

Я обнаружил, что это нормально, так как клавиатура имеет блок анимации, предоставляемый средой выполнения. Однако это может быть переопределено этим как параметры: https://developer.apple.com/documentation/uikit/uiview/animationoptions/1622434-overrideinheritedduration

Однако, это не работает, это игнорирует мою конфигурацию и вместо этого использует клавиатуру .. Я попытался обернуть код с Dispatch.main.asyn c и иногда это работает, а иногда нет.

Кто-нибудь знает, как это исправить?

Я думал, что это может быть из-за моих ограничений будучи обновленным внутри блока клавиатуры, и поскольку он имеет свой собственный блок анимации, он может уже обновляться при запуске моей пользовательской анимации, не уверенный, имеет ли это смысл.

    @objc func keyboardWillShow(notification: NSNotification) {

         if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {


            constraint.constant = -300

            DispatchQueue.main.sync {
                 UIView.animate(withDuration: 15, delay: 0, options: [.overrideInheritedDuration], animations: {
                               self.view.layoutIfNeeded()
                           }, completion: nil)
            }


        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...