同一个 Action 我有两个来源。 UIBarButtonItem
中的常规 RxCocoa 点击:
browseButton.rx.tap
以及UIView
中的RxGesture点击手势识别器:
notConnectedView.rx.tapGesture().when(.recognized)
我以通常的方式订阅它:
<any_of_the_observables>
.subscribe(onNext: {
// Do things
}).disposed(by: disposeBag)
这适用于两个可观察量,现在我想合并它但无法实现。由于它们是不同事件的两个可观察量,合并不起作用。
Observable.of(notConnectedView.rx.tapGesture().when(.recognized), browseButton.rx.tap)
Type 'inout UIView' does not conform to protocol 'ReactiveCompatible'
这有可能吗?谢谢。
最佳答案
您应该获得相同的事件类型,例如将两个事件都转换为 void:
let buttonItemTap = item.rx.tap.map { _ in return () }
let viewTap: Observable<Void> = v.rx.tapGesture().when(.recognized).map { _ in return () }
Observable.of(buttonItemTap, viewTap).merge()
.subscribe(onNext: { (_) in
print("tapped")
}).disposed(by: disposeBag)
关于ios - 合并 UIBarButtonItem tap 和 UIView tapGesture() 的 Observables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47000000/