升级到 xcode 14 后,覆盖 UIViewController 的 inputAccessoryView 会导致推送/弹出 UINavigationController 转换期间出现动画问题。 (在 Xcode 13 上,没有问题)
override var inputAccessoryView: UIView? {
return myCustomInputBar
}
override var canBecomeFirstResponder: Bool{
return true
}
两个主要问题是:
inputAccessoryView 会闪烁/出现在您要转换的当前视图上方。 (inputAccessoryView 应该仅在其 UIViewController 的范围内显示)
推/弹出过渡动画不流畅。新屏幕向前移动,然后短暂向后移动,然后再次继续前进。
https://developer.apple.com/forums/thread/721301(这个问题提到了同样的事情)
这是过早出现的 inputAccessoryView 的屏幕截图:
以下是该问题的视频: 破碎的推送动画/输入栏闪烁
当前解决方法: 仅在 viewDidAppear 中显示 inputBarAccessoryView,这修复了 navigationController 转换期间的动画问题,但这会导致明显的延迟。
还有其他人遇到过这个问题吗?任何帮助将非常感激。
我遇到了这个问题。我决定做的是避免覆盖
inputAccessoryView
,而是将附件视图直接添加到 ViewController 并将其限制为 keyboardLayoutGuide
。
有人告诉我,避免使用
inputAccessoryView
可能不是一个选择,因为它负责其他事情,并在 iPadOS 中的分离键盘、外部键盘等情况下提供更好的布局。
但它可能对你有用,它当然对我的应用程序有用,并帮助我解决了附件视图动画的其他视觉错误。