如何使用导航视图解决损坏的 UIKeyboardLayoutGuide?

Fab*_*b1n 7 uikit ios swift ios15

iOS 15 添加了新功能,UIKeyboardLayoutGuide能够对需要与键盘做出反应的视图施加约束。

这在单个视图中效果很好,但是当您在视图 A中设置约束并将视图 B推入堆栈时,键盘布局指南突然变为CGRect.zero(在视图 A中)的大小。

当返回到视图A时,键盘布局引导框架是静止的,因此键盘布局引导顶部“SomeView”.bottom.zero之间的约束例如被打破。

为了展示这个问题,我向跟踪控制器添加了一个绿色视图,并向键盘布局指南顶部锚点添加了底部约束,如下所示:

let kbView = UIView()
kbView.backgroundColor = .green
kbView.translatesAutoresizingMaskIntoConstraints = false

self.view.addSubview(kbView)

kbView.widthAnchor.constraint(equalToConstant: 200).isActive = true
kbView.heightAnchor.constraint(equalToConstant: 100).isActive = true
kbView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true

kbView.bottomAnchor.constraint(equalTo: self.view.keyboardLayoutGuide.topAnchor).isActive = true
Run Code Online (Sandbox Code Playgroud)

您可以在 Github 上的以下链接中找到整个项目。

我们如何解决这个问题?其他人也遇到过这个问题吗?
我当前的解决方法是编写自己的布局指南,该指南可以正常工作,并且与 iOS < 15 兼容。

真的,这不可能是真的(?!),因为这是一个新的、闪亮的功能……
也许我忽略了一些东西……

无论如何:这是展示该问题的演示项目