小编Rud*_*den的帖子

SwiftUI TextField 货币格式问题

我在使用 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)

formatting usability currency textfield swiftui

3
推荐指数
1
解决办法
2398
查看次数

标签 统计

currency ×1

formatting ×1

swiftui ×1

textfield ×1

usability ×1