SwiftUI TextField with formatter not working?

前端 未结 5 1892
走了就别回头了
走了就别回头了 2020-11-29 02:00

I\'m trying to get a numeric field updated so I\'m using a TextField with the formatter: parameter set. It formats the number into the entry field just fine, but does not up

5条回答
  •  [愿得一人]
    2020-11-29 02:42

    It seems while using value: as an input, SwiftUI does not reload the view for any key that users tap on. And, as you mentioned, it reloads the view when users exit the field or commit it.

    On the other hand, SwiftUI reloads the view (immediately) using text: as an input whenever a key is pressed. Nothing else comes to my mind.

    in my case, I did it for someNumber2 as below:

    struct ContentView: View {
    
    @State var someNumber = 123.0
    @State var someNumber2 = "123"
    
    
    var formattedNumber : NSNumber {
    
        let formatter = NumberFormatter()
    
        guard let number = formatter.number(from: someNumber2) else {
            print("not valid to be converted")
            return 0
        }
    
        return number
    }
    
    var body: some View {
    
        VStack {
    
            TextField("Number", value: $someNumber, formatter: NumberFormatter())
            TextField("Number2", text: $someNumber2)
    
            Text("number: \(self.someNumber)")
            Text("number: \(self.formattedNumber)")
        }
      }
    }
    

提交回复
热议问题