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)
如何创建 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)