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.
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()
}
}
}