RxSwift:按住按钮时可观察到

RxSwift: Observable while a button holds down

如何创建 Observable,它在按住按钮时重复流式传输事件?

连我都在为你的问题寻找解决方案。我从 RxSwift slack 频道得到了帮助。

    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

还要检查 Interval Documentation。感谢 RxSwift slack 频道的@jari。

为了继续 rootcoder 响应,我遇到了一种情况,我必须识别一次大于三秒的长按

 let signinLongpress = signinButton.rx.controlEvent([.touchDown])
    signinLongpress
        .flatMapLatest { _ in
            Observable<Int64>.interval(3, scheduler: MainScheduler.instance)
                .take(1)
        }
        .subscribe(onNext:{ _ in print("do fun stuff only once when longpress detected")})
        .disposed(by: disposeBag)