Я пытаюсь анимировать вид во время показа / скрытия клавиатуры, но он не работает, анимация использует время анимации клавиатуры вместо моего.
Я обнаружил, что это нормально, так как клавиатура имеет блок анимации, предоставляемый средой выполнения. Однако это может быть переопределено этим как параметры: 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)
}
}
}