不确定这是否是一个错误,或者我是否做错了什么,但如果我使用:
.toolbar {
ToolbarItemGroup(placement: .navigationBarLeading) {
if isFocused == .zipCode {
Text("Test")
}
}
}
当 zipCode 字段获得焦点时,我的文本就会显示。但是,如果我做同样的事情但使用placement: .keyboard则不会,除非我还提供如下所示的附加视图:
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
if isFocused == .zipCode {
Text("Test")
}
Text("Default")
}
}
如果我这样做,我会在每个键盘上看到“默认”一词,然后在我的邮政编码字段上,键盘变为数字键盘,显示“默认测试”。
我正在尝试仅将键盘工具栏项添加到数字键盘。我尝试将条件修改为 TextField.keyboardType == .numberPad 但你不能这样做,我也无法让 UIKeyboardType == .numberPad 工作。
此表单有多个字段,我只想在显示数字键盘时添加一个按钮。如果显示其他键盘类型,我不想添加任何内容。
这是针对 iOS 15 的 SwiftUI(最新)。
.keyboard 工具栏总体上是有问题的。请参阅:SwiftUI 中的重复工具栏。
对于你的问题,这可行,但我想你想要按钮......
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
Text(isFocused == .zipCode ? "ZIP" : "")
}
}
我不确定您是否找到了解决方案,但这似乎适用于 iOS 17.5。
@FocusState private var focusField: Field?
if focusField == .zipcode {
ToolbarItemGroup(placement: .keyboard) {
Spacer()
Button(role: .none) {
focusNextField()
} label: {
Text("next")
}
}
}