我想在SwiftUI的文本字段中添加$sign

我想在SwiftUI的文本字段中添加$sign,swiftui,textfield,Swiftui,Textfield,嗨,我想在用户键入时向文本字段添加$sign。 这是我当前的代码 ZStack(alignment: .leading) { if price.isEmpty { Text("Enter total budget") } HStack { TextField("", text: $price) .keyboardType(.decimalPad) } } 货币格式化程序是一种方法,但如果您只想在键入时在文本

嗨,我想在用户键入时向文本字段添加$sign。

这是我当前的代码

ZStack(alignment: .leading) {
  if price.isEmpty {
    Text("Enter total budget")
  }
  HStack {
    TextField("", text: $price)
      .keyboardType(.decimalPad)
  }
}


货币格式化程序是一种方法,但如果您只想在键入时在文本字段中显示$,则可以使用如下内容: (当然,您可以将此方法与格式化程序结合使用)


货币格式化程序是一种方法,但如果您只想在键入时在文本字段中显示$,则可以使用如下内容: (当然,您可以将此方法与格式化程序结合使用)


使用格式化程序将某种货币格式化程序与
文本字段一起使用可能是合理的,它不会在键入过程中进行即时格式化,但在编辑完成时它肯定会对输入值进行格式化。你的应用程序是否只支持美元?使用格式化程序将某种货币格式化程序与
文本字段一起使用可能是合理的,它不会在输入时即时格式化,但在编辑完成时,它肯定会格式化输入值。你的应用程序只支持美元吗?
struct ContentView: View {
    @State var price = ""
    
    var body: some View {
        VStack {
            ZStack(alignment: .leading) {
                if price.isEmpty {
                    Text("Enter total budget")
                }
                HStack {
                    TextField("", text: Binding(
                        get: { price },
                        set: { newVal in
                        if price.starts(with: "$") {
                            price = newVal
                        } else {
                            price = "$" + newVal
                        }
                    })).keyboardType(.decimalPad)
                }
            }.padding(20)
            Text("number entered: " + String(price.dropFirst()))
        }
    }
}