我在使用 TextField 输入货币金额时遇到了 SwiftUI 最终用户的可用性问题。
绑定字段是双精度型,初始设置为 0,当显示文本字段时,提示为 $0.00。
问题是,当用户想要输入一个值时,他们必须手动使用退格键删除 0.00。另外,如果他们不小心在 $ 符号上退格,则此后输入的任何值都会消失!
当存在多个货币字段时,这对于最终用户来说是一个真正的麻烦。
formatter.zeroSymbol = ""我在互联网上看到了在 NumberFormatter 中设置 的建议,但是当numberStyle = .currency输入的任何值都会丢失/损坏。
如果我将数字样式更改为.decimal,我可以使用该zeroSymbol选项并且它似乎有效,但我丢失了货币格式。
有谁知道如何解决这一问题?
以下是您可以运行来演示此问题的示例代码。
import SwiftUI
struct ContentView: View {
@State private var amount: Double = 0
let currencyFormat: NumberFormatter = {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
// formatter.zeroSymbol = ""
return formatter
}()
var body: some View {
HStack {
Text("Enter Amount")
Spacer()
TextField("", value: $amount, formatter: currencyFormat)
.keyboardType(.numbersAndPunctuation)
} …Run Code Online (Sandbox Code Playgroud)