合并 UIBarButtonItem tap 和 UIView tapGesture() 的 Observables
Merge Observables of UIBarButtonItem tap and UIView tapGesture()
同一个动作我有两个来源。 UIBarButtonItem
:
中的常规 RxCocoa 水龙头
browseButton.rx.tap
和 UIView
中的 RxGesture 点击手势识别器:
notConnectedView.rx.tapGesture().when(.recognized)
我按常规方式订阅:
<any_of_the_observables>
.subscribe(onNext: {
// Do things
}).disposed(by: disposeBag)
这适用于两个可观察对象,现在我想合并它但无法实现。因为它们是不同事件的两个可观察对象 merge
不起作用。
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)
同一个动作我有两个来源。 UIBarButtonItem
:
browseButton.rx.tap
和 UIView
中的 RxGesture 点击手势识别器:
notConnectedView.rx.tapGesture().when(.recognized)
我按常规方式订阅:
<any_of_the_observables>
.subscribe(onNext: {
// Do things
}).disposed(by: disposeBag)
这适用于两个可观察对象,现在我想合并它但无法实现。因为它们是不同事件的两个可观察对象 merge
不起作用。
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)