web-dev-qa-db-fra.com

Comment créer SwiftUI TextField qui n'accepte que des chiffres et un seul point?

Comment créer un champ de texte swiftui qui permet à l'utilisateur de saisir uniquement des nombres et un seul point? En d'autres termes, il vérifie chiffre par chiffre les entrées utilisateur, si l'entrée est un nombre ou un point et que le champ de texte n'a pas d'autre point, le chiffre est accepté, sinon l'entrée de chiffre est ignorée. L'utilisation d'un stepper n'est pas une option.

3
M.Serag

Il s'agit d'une solution simple pour la validation TextField: (mise à jour)

struct ContentView: View {
@State private var text = ""

func validate() -> Binding<String> {
    let acceptableNumbers: String = "0987654321."
    return Binding<String>(
        get: {
            return self.text
    }) {
        if CharacterSet(charactersIn: acceptableNumbers).isSuperset(of: CharacterSet(charactersIn: $0)) {
            print("Valid String")
            self.text = $0
        } else {
            print("Invalid String")
            self.text = $0
            self.text = ""
        }
    }
}

var body: some View {
    VStack {
        Spacer()
        TextField("Text", text: validate())
            .padding(24)
        Spacer()
    }
  }
}
0
FRIDDAY