iOS16 上键盘的 SwiftUI ToolbarItemGroup

kit*_*ian 7 keyboard toolbar swiftui

由于新的 NavigationStack 有相当多的问题,包括此时相当严重的内存泄漏,我仍在使用旧的 NavigationView ,构建目标为 iOS 15+。

但是,运行 iOS 16 的设备不再在键盘中显示 ToolbarItemGroup 内容。ToolbarItem(placement: .navigationBarTrailing) 工作正常,但 ToolbarItemGroup(placement: .keyboard) 不再显示内容。

这是我用于键盘工具栏项目的代码:

.toolbar {
    ToolbarItemGroup(placement: .keyboard) {
        HStack {
            Spacer()
            Button {
                isFocused = nil
            } label: {
                Image(systemName: "keyboard.chevron.compact.down")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这应该在键盘顶部显示图像,允许用户在点击时分散注意力。它在 iOS 15 上完美运行,但在运行 iOS 16 的设备上没有任何显示。

我正在真实设备上进行测试,而不是模拟器。

kit*_*ian 0

这似乎是 iOS 16 的另一个错误。看起来,如果您将整个键盘工具栏包装在 HStack 中,它不会出现在 iOS 16 中,但是,如果您想象 HStack 首先隐式包围所有键盘工具栏元素,然后删除 HStack 包装,一切都按其应有的方式进行。

此外,只要您的整个键盘工具栏没有包含在 HStack 中,您的工具栏中就可能有子 HStack 元素。

这是解决方案:

.toolbar {
    ToolbarItemGroup(placement: .keyboard) {
        Spacer()
        Button {
            isFocused = nil
        } label: {
            Image(systemName: "keyboard.chevron.compact.down")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)