在 RxSwift 中设置 TextField 字符的限制 [重复]
Posted
技术标签:
【中文标题】在 RxSwift 中设置 TextField 字符的限制 [重复]【英文标题】:Set Limit for TextField characters in RxSwift [duplicate] 【发布时间】:2018-09-03 14:31:10 【问题描述】:我想使用 RxSwift 为 textFiled 中的字符设置一个限制,
也许我可以从Scan
运算符中受益,但我不知道在这种情况下如何使用它,
我希望生成的代码与在 shouldChangeCharacterInRage
方法中实现它的行为相同:
func textField(_ textField: UITextField,
shouldChangeCharactersIn range: NSRange,
replacementString string: String)
-> Bool
if textField == baseTextFiled
let enteredString = (textField.text! as NSString).replacingCharacters(in: range, with: string)
if enteredString.count > limit // limit defined previously
return false
return true
有什么帮助吗?
【问题讨论】:
你尝试了什么? 【参考方案1】:ReactiveX 推送数据,因此与特定的委托方法并不真正兼容。也就是说,您仍然可以这样做,因为.rx.text
是一个控件属性...
baseTextField.rx.text.orEmpty // pushes text
.map String($0.prefix(limit)) // pushes first X characters in text
.distinctUntilChanged() // only pushes if text is different than previously
.bind(to: baseTextField.rx.text) // pushes text into text field
.disposed(by: bag)
【讨论】:
感谢 Daniel 的帮助,但您的解决方案只有在我删除distinctUntilChanged()
时才有效以上是关于在 RxSwift 中设置 TextField 字符的限制 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
java JavaFX - 在JavaFX TextField中设置提示(提示)int