簡體   English   中英

RxSwift / RxCocoa:防止UITextField包含超過…個字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM