如何创建在按钮按下时重复流式传输事件的Observable?
答案 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)