如何用 RxSwift 的方式实现 shouldChangeText 函数

7

有没有一种使用RxSwift的方式来实现UITextViewshouldChangeTextIn代理方法?我的目标是限制用户的文本输入。我只有这个:

    self.textView.rx.text
        .orEmpty
        .scan("") { (previous, new) -> String in
            return new.count > 254 ? previous : new
        }
        .bind(to: self.viewModel.notes)
        .disposed(by: self.disposeBag)

这是关于数据的问题,但我不知道如何在计数达到254后阻止进一步输入。

我还发现了RxTextViewDelegateProxy,但我不确定如何使用它。

let rxTVDelegateProxy = RxTextViewDelegateProxy(textView: self.textView)
1个回答

8

试试这个:

       textView.rx.text.orEmpty
        .scan("") { (previous, new) -> String in

            return new.count < 254 ? new : previous ?? String(new.prefix(254))
        }
        .bind(to: textView.rx.text)
        .disposed(by: disposeBag)

哦,哈哈。我在看到另一个帖子的解决方案时忘记了前缀。谢谢你。 - Glenn Posadas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接