Uxextview上的RxSwift

时间:2018-05-27 07:07:39

标签: swift uitextview reactive-programming rx-swift

我想在textview中每4次更改一次调用函数。 我怎样才能用RXswift debounce油门执行它? 我使用UITextViewDelegate来检测textview中的更改。

2 个答案:

答案 0 :(得分:2)

我使用rx.net,其中一种方法是使用split

在查看RxSwift的split

的实现之后
buffer

您有2个参数:

  • buffer作为超时
  • func buffer(timeSpan:count:scheduler:) 指定缓冲区的最大元素

每次超时或达到最大计数时都会返回窗口。

因此,在您的情况下,只需将超时设置为10年或其他,并将计数设置为4.获取返回的每个窗口的最后一个元素。

导入timeSpancount后,您可以执行以下操作:

RxSwift

注意:对于上面的示例,全局声明RxCocoa

答案 1 :(得分:0)

RxSwift 5.0已测试

        textField.rx
        .text
        .orEmpty
        .distinctUntilChanged()
        .map { _ in 1}
        .scan(0, accumulator: { $0 + $1 })
        .filter { $0 % 4 == 0 }
        .subscribe(onNext: { (value) in
            print(value)
        })
        .disposed(by: disposeBag)

如果您希望每10个元素触发一次射击,则可以将数字4更改为10。祝您好运。