RxSwift: Observable while a button holds down

2019-04-02 21:32发布

问题:

How to create Observable which streams an event repeatedly while a button holds down?

回答1:

Even I was looking for a solution for your question. I got help from RxSwift slack channel.

    let button = submitButton.rx_controlEvent([.TouchDown])
      button
        .flatMapLatest { _ in
            Observable<Int64>.interval(0.1, scheduler: MainScheduler.instance)
                .takeUntil(self.submitButton.rx_controlEvent([.TouchUpInside]))
        }
        .subscribeNext{ x in print("BOOM \(x)") }
        .addDisposableTo(disposeBag)

//prints BOOM 0 BOOM 1 BOOM 2 BOOM 3 BOOM 4 BOOM 5 for every 0.1 seconds

And also Check Interval Documentation.Thanks to @jari of RxSwift slack channel.