RxSwift на UITextview - PullRequest
       30

RxSwift на UITextview

0 голосов
/ 27 мая 2018

Я хочу вызывать функцию каждые 4 изменения в моем текстовом просмотре.как я могу выполнить это с помощью RXswift debounce throttle?Я использую UITextViewDelegate для обнаружения изменений в моем текстовом представлении.

1 Ответ

0 голосов
/ 27 мая 2018

Я использую rx.net, и один из способов достижения этого - использование buffer

. После рассмотрения реализации RxSwift buffer

func buffer(timeSpan:count:scheduler:)

У вас есть 2 параметра:

  • timeSpan в качестве таймаута
  • count для указания максимальных элементов буфера

Окно возвращается каждый раз, когда происходит тайм-аут или когдаМаксимальный счет достигнут.

Итак, в вашем случае просто установите тайм-аут на 10 лет или около того, и установите количество на 4. Возьмите последний элемент каждого возвращенного окна.

После импорта RxSwift и RxCocoa Вы можете сделать:

textView
    .rx
    .text
    .buffer(timeSpan: 3600, count: 4, scheduler: MainScheduler.instance)
    .subscribe(onNext: { (buffer) in
        guard let lastestString = buffer.last as? String else { return }
        print(lastestString)
    })
    .disposed(by: disposeBag)

ПРИМЕЧАНИЕ: disposeBag объявлено глобально для приведенного выше примера.

...