我将工具栏添加到 2 个文本字段,但工具栏显示了两次:
这是我的自定义文本字段的代码:
public struct SUIDecimalField: View {
public var body: some View {
TextField(placeholder, text: $value)
.focused(focused)
.textFieldStyle(.roundedBorder)
.keyboardType(.decimalPad)
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
HStack {
Button(LOC(.clearKeyboardButton)) {
value = ""
}
Spacer()
Button(LOC(.dismissKeyboardButton)) {
focused.wrappedValue = false
}
}
}
}
}
}
如您所见,我仅将工具栏添加到文本字段。我有 2 个文本字段,它出现了两次。
看起来工具栏在所有文本字段之间以某种方式共享。我想知道我该如何解决它?我真的想将工具栏放在文本字段实现中,以便封装逻辑。
尝试应用.toolbar
上的修饰符Form
它本身而不是每个人TextField
像这样:
import SwiftUI
struct ContentView: View {
@State private var value1 = ""
@State private var value2 = ""
@FocusState private var focused: Int?
var body: some View {
Form {
MyTextField(value: $value1, tag: 1, focused: $focused)
.focused($focused, equals: 1)
MyTextField(value: $value2, tag: 2, focused: $focused)
.focused($focused, equals: 2)
}
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
HStack {
Button("Clear") {
switch focused {
case 1: value1 = ""
case 2: value2 = ""
default: return
}
}
Spacer()
Button("Done") {
focused = nil
}
}
}
}
}
}
struct MyTextField: View {
@Binding var value: String
var tag: Int
var focused: FocusState<Int?>.Binding
var body: some View {
TextField("Test", text: $value)
.textFieldStyle(.roundedBorder)
.keyboardType(.decimalPad)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)