RxSwift:当按钮按下时可观察

时间:2016-08-24 10:21:58

标签: swift rx-swift

如何创建在按钮按下时重复流式传输事件的Observable?

2 个答案:

答案 0 :(得分:7)

即使我在为你的问题寻找解决方案。我得到了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。感谢@jari的RxSwift松弛频道。

答案 1 :(得分:1)

要继续进行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)