[英]RxSwift/RxCocoa: prevent UITextField from having more than … characters
我想用RxSwift / RxCocoa配置一個UITextField,以便它最多只包含...個字符。 我不想為此使用UITextFieldDelegate
,但希望通過RxSwift / RxCocoa實現此目的。 有沒有辦法做到這一點?
當然:
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)
在此示例中,文本字段限制為40個字符。
編輯:
達到限制時保持先前的值。
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)
這可能適合於遵守其他規則...
但是請注意,當達到字符數限制時,光標將跳到textField的末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.