RxSwift
RxCocoa

2つのUITextFieldの入力があった時にUIButtonの状態を操作する

調べるといろいろな実装方法があるようですが、よくある実装例として2つのUITextFieldに入力があったらUIButtonのisEnabledを変更するといったものが多いようです。

今回はisEnabledの他にUIButtonのalpha値なども調整したかったのでちょっと工夫をしました。
(これはこれでもっと他のいいやり方があるんだろうなぁと思いつつ、、、誰か教えてください)

let buttonEnable = Observable.combineLatest(textField1.rx.text.orEmpty.asObservable(), textField2.rx.text.orEmpty.asObservable()) {
    $0.count > 0 && $1.count > 0
}

buttonEnable.subscribe(onNext: { [weak self] result in
    if result {
          self?.button.isEnabled = true
          self?.button.alpha = 1.0
     } else {
          self?.button.isEnabled = false
          self?.button.alpha = 0.6
     }
}).disposed(by: disposeBag)

Rxにおける基本的なObservableをsubscribeするという方法に落ち着きました。