ios - 合并 UIBarButtonItem tap 和 UIView tapGesture() 的 Observables

标签 ios rx-swift rx-cocoa

同一个 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/

相关文章:

ios - 为什么我的模型不能保存到 Core Data?

ios - 如何使用RxSwift取消之前的请求

ios - 适用于 iOS 的粒子动画

ios - 如何在 swift 3 中动态隐藏 tabBarController 中的选项卡

ios - 尝试使用 RxSwift 中的过滤器访问属性

ios - RxSwift : Subscribe to Observable. 压缩包。将结果作为元组处理?

swift - RxCocoa 在 Swift4 中映射可选错误,字符串为 'Cannot convert value of type '?

ios - RxSwift 和 UIPickerView

ios - 使用 KVO 观察 WKWebView 的 URL 属性在 iOS 10 中不起作用

ios - Rx swift : Chain Completable to Observable