我有以下代码用于格式化文本字段中的字符串。但是,它不遵守设置中设置的规则,这意味着对于像 123456.00 这样的字符串,我得到 123,456.00 而不是 123456,00。
struct HomeView: View {
@FocusState private var isFocused: Bool
@State var value: Double?
var body: some View {
VStack {
Text("\(value ?? 0, format: .number)")
.font(.title)
TextField("0.0",
value: $value,
format: .number.locale(.current))
.onSubmit {
print("asdas")
}
.focused($isFocused)
.border(.red)
.keyboardType(.decimalPad)
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
if isFocused {
Spacer()
Button("Done") {
isFocused = false
}
}
}
}
}
}
}
是否有不同的方法来实现这一目标,或者我错过了什么?
struct HomeView: View {
@FocusState private var isFocused: Bool
@State var value: Double?
private var numberFormatter: NumberFormatter = {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.minimumFractionDigits = 2
formatter.maximumFractionDigits = 2
formatter.decimalSeparator = ","
formatter.groupingSeparator = ""
return formatter
}()
var body: some View {
VStack {
Text(value.map { numberFormatter.string(from: NSNumber(value: $0)) } ?? "0,00")
.font(.title)
TextField("0.0", value: $value, formatter: numberFormatter)
.onSubmit {
print("asdas")
}
.focused($isFocused)
.border(.red)
.keyboardType(.decimalPad)
.toolbar {
ToolbarItemGroup(placement: .keyboard) {
if isFocused {
Spacer()
Button("Done") {
isFocused = false
}
}
}
}
}
}
}