我有两个相同动作的来源。 UIBarButtonItem
中的常规RxCocoa点击:
browseButton.rx.tap
和UIView
中的RxGesture点击手势识别器:
notConnectedView.rx.tapGesture().when(.recognized)
我按照通常的方式订阅它:
<any_of_the_observables>
.subscribe(onNext: {
// Do things
}).disposed(by: disposeBag)
这适用于两个observable,现在我想合并但无法实现它。因为它们是两个不同事件的可观察事件merge
不起作用。
Observable.of(notConnectedView.rx.tapGesture().when(.recognized), browseButton.rx.tap)
输入'inout UIView'不符合协议'ReactiveCompatible'
有可能做到这一点吗?感谢。
答案 0 :(得分:1)
您应该获得相同的事件类型,例如将两个事件都转换为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)