输入 Int 的 iOS SwiftUI TextField 缺少占位符

Mar*_*zky 2 placeholder textfield ios swiftui

我希望我的 iOS SwiftUI TextField显示占位符“输入整数:”,但 TextField 显示 0(var 值的值)。当用户删除 0 时,确实会出现占位符“输入整数:”。如何让占位符“输入整数:”出现而不让用户先删除 0?先感谢您。macOS Catalina 10.15.6 上的 Xcode 11.6。

struct ContentView: View {
    @State private var value: Int = 0;
    @State private var text: String = "";
    
    var body: some View {
        VStack {
            TextField(
                "Enter an integer:",
                value: $value,
                formatter: NumberFormatter(),
                onCommit: {self.text = "The product is \(2 * self.value).";}
            )
            .keyboardType(.numbersAndPunctuation)
            .textFieldStyle(RoundedBorderTextFieldStyle())
            
            Text(text)
        }
        .padding([.leading, .trailing], 16)
    }
}
Run Code Online (Sandbox Code Playgroud)

Asi*_*LAN 5

我们需要使用格式化程序来显示占位符。

我们的格式化程序应该有formatter.zeroSymbol = ""

let numberFormatter: NumberFormatter = {
    let formatter = NumberFormatter()
    formatter.numberStyle = .none
    formatter.zeroSymbol  = ""
    return formatter
}()
Run Code Online (Sandbox Code Playgroud)

使用格式化:

TextField("Enter an integer:", value: $value, formatter: numberFormatter)
                    .keyboardType(.numbersAndPunctuation)
Run Code Online (Sandbox Code Playgroud)

快乐编码:)