由于新的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")
}
}
}
}
这应该在键盘的顶部显示图像,允许用户在点击时不聚焦。它在iOS 15上运行良好,但在iOS 16上却无法显示。
我在一个真实的设备上测试,而不是模拟器。
我在iOS 16.2上的工作
我有完全相同的问题。不幸的是,@kittonian的解决方案并没有为我工作,但以下做:保持HStack
,但在其左侧添加一个空的Text
元素。
.toolbar {
ToolbarItem(placement: .keyboard) {
HStack {
Text("")
Spacer()
Button("Done") {
field = nil
}
}
}
}
这似乎是iOS 16的又一个bug。看起来,如果你把整个键盘工具栏包装在HStack中,它将不会出现在iOS 16中,然而,如果你想象HStack首先隐式地包围了所有键盘工具栏元素,然后删除HStack包装,一切都会正常工作。
另外,只要你的整个键盘工具栏没有被包裹在HStack中,你的工具栏就可以有子HStack元素。
解决方案如下:
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
Spacer()
Button {
isFocused = nil
} label: {
Image(systemName: "keyboard.chevron.compact.down")
}
}
}