je pense que c’est possible mais je ne sais pas comment.
L’idée est de ne saisir que des chiffres et de valider directement après la saisie du nième (4 ou 5) sans avoir à cliquer sur un bouton de validation.
D’ailleurs je n’utilise que le clavier numérique et lui même n’a pas de bouton de validation.
Facile ou … pas ?
Hello @grattours
Je ne l’ai jamais fait, mais il me semble que pour le UITextField, tu peux restreindre l’utilisateur à des nombres assez facilement avec le Storyboard, et ensuite, via le UITextFieldDelegate, il doit surement avoir une méthode qui permet de faire une action juste après l’ajout d’un caractère (d’un chiffre dans ton cas). Il ne reste plus qu’à compter le nombre de chiffre entré, et à lancer la méthode de validation lorsque tu as le nombre de chiffre que tu veux.
Bonne journée,
Alexandre
Merci pour la réponse,
j’utilise “inputNumberTextField?.keyboardType = UIKeyboardType.numberPad” dans le viewDidLoad(), je n’ai que que clavier numérique qui apparait, donc pas besoin de filtrer.
je suis une piste avec UITextFieldDelegate et .addtarget… j’approche… enfin j’espère
Ca marche aussi via le code, en effet
Pour le addTarget, c’est ce qu’il faut faire il me semble (vu sur le net rapidement).
Tiens moi au courant si tu n’y arrives pas
Bon amusement,
Alexandre
je crois que j’y suis,
pas besoin de validation, je compte et quand c’est ok je continue
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var inputNumberTextField: UITextField!
var nbreLimitDeCar: Int = 4
override func viewDidLoad() {
super.viewDidLoad()
inputNumberTextField?.delegate = self
inputNumberTextField?.addTarget(self, action: #selector(numberDidEntered(textField:)), for:UIControl.Event.editingChanged)
}
@objc func numberDidEntered(textField:UITextField) {
print(inputNumberTextField?.text?.count ?? 0)
if inputNumberTextField?.text?.count ?? 0 < nbreLimitDeCar
{
return
}
print("bravo, vous avez saisi \(String(describing: inputNumberTextField?.text)) qui est une nombre à \(nbreLimitDeCar) chiffres")
inputNumberTextField.text = ""
}