2017-10-29 13 views
0

私は同じアクションの2つのソースを持っています。 UIViewUIBarButtonItemタップとUIViewのマージオブザーバブルtapGesture()

browseButton.rx.tap 

とRxGestureタップジェスチャー認識:UIBarButtonItemの正規RxCocoaタップ

<any_of_the_observables> 
    .subscribe(onNext: { 
     // Do things 
    }).disposed(by: disposeBag) 

これはで動作します:

notConnectedView.rx.tapGesture().when(.recognized) 

私はそれに通常の方法をサブスクライブ両方のオブザーバブル、そして今私はそれをマージしたいが、それを達成することはできません。彼らは異なるイベントの2つのオブザーバブルなので、mergeは機能しません。

Observable.of(notConnectedView.rx.tapGesture().when(.recognized), browseButton.rx.tap) 

'UIViewのinoutの' 種類がプロトコルに準拠していない 'ReactiveCompatible'

はこれを作るために、それは可能ですか?ありがとう。

答えて

0

あなたが同じイベントの種類を取得する必要があり、例えば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) 
+0

勤務:Dのおかげで! – emenegro

関連する問題