J'aimerais avoir un UITextField configuré avec RxSwift/RxCocoa afin qu'il ne contienne que jusqu'à ... caractères. Je ne veux pas utiliser le UITextFieldDelegate
pour cela, mais j'aimerais y parvenir avec RxSwift/RxCocoa. Y a-t-il un moyen de faire cela?
Sûr:
textField.rx.controlEvent(.editingChanged).subscribe(onNext: { [unowned self] in
if let text = self.textField.text {
self.textField.text = String(text.prefix(40))
}
}).disposed(by: disposeBag)
Dans cet exemple, le champ de texte est limité à 40 caractères.
Éditer:
Conserver la valeur précédente lorsque la limite est atteinte.
textField.rx.text.orEmpty
.scan("") { (previous, new) -> String in
if new.count > 40 {
return previous ?? String(new.prefix(40))
} else {
return new
}
}
.subscribe(textField.rx.text)
.disposed(by: disposeBag)
Cela peut probablement être adapté pour respecter d'autres règles ...
Veuillez noter cependant que lorsque vous atteignez la limite de caractères, votre curseur sautera à la fin du champ de texte.