Xcode 14:自定义inputAccessoryView过早出现,导致推送动画损坏

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

升级到 xcode 14 后,覆盖 UIViewController 的 inputAccessoryView 会导致推送/弹出 UINavigationController 转换期间出现动画问题。 (在 Xcode 13 上,没有问题)

    override var inputAccessoryView: UIView? {
        return myCustomInputBar
    }

    override var canBecomeFirstResponder: Bool{
        return true
    }

两个主要问题是:

  1. inputAccessoryView 会闪烁/出现在您要转换的当前视图上方。 (inputAccessoryView 应该仅在其 UIViewController 的范围内显示)

  2. 推/弹出过渡动画不流畅。新屏幕向前移动,然后短暂向后移动,然后再次继续前进。

https://developer.apple.com/forums/thread/721301(这个问题提到了同样的事情)

这是过早出现的 inputAccessoryView 的屏幕截图:

enter image description hereenter image description here

以下是该问题的视频: 破碎的推送动画/输入栏闪烁

弹出动画损坏/输入栏闪烁

当前解决方法: 仅在 viewDidAppear 中显示 inputBarAccessoryView,这修复了 navigationController 转换期间的动画问题,但这会导致明显的延迟。

还有其他人遇到过这个问题吗?任何帮助将非常感激。

ios swift uinavigationcontroller xcode14 inputaccessoryview
1个回答
0
投票

我遇到了这个问题。我决定做的是避免覆盖

inputAccessoryView
,而是将附件视图直接添加到 ViewController 并将其限制为
keyboardLayoutGuide

有人告诉我,避免使用

inputAccessoryView
可能不是一个选择,因为它负责其他事情,并在 iPadOS 中的分离键盘、外部键盘等情况下提供更好的布局。 但它可能对你有用,它当然对我的应用程序有用,并帮助我解决了附件视图动画的其他视觉错误。

© www.soinside.com 2019 - 2024. All rights reserved.