passWordInputView.inputTextField.rx.controlEvent(.editingDidEnd)
.bindTo(loginButton.rx.tap)
.disposed(by: disposeBag)
完成密码编辑后再登录
但得到错误: 输入' inout UIButton'不符合协议' ReactiveCompatible'
答案 0 :(得分:6)
由于RxSwift包含the following line,因此当您为任何NSObject子类(UIKit中的任何内容)获取此错误时,您可以非常确定其他东西会给编译器带来麻烦。
extension NSObject: ReactiveCompatible { }
根据我的经验,当尝试错误地使用rx方法或运算符或者存在一些语法错误时会发生此错误。
例如,当我尝试合并两个像这样的
时,我收到了一个collectionView的错误Observable.merge(collectionView.rx.streamOne, streamTwo)
但合并两个流的正确方法是
Observable.of(collectionView.rx.streamOne, streamTwo).merge()
(注意看起来像在RxSwift 3.4中添加了静态Observable.merge)
您正在尝试将来自inputTextField.rx.controlEvent(.editingDidEnd)
的{{1}}流绑定到Observable<Void>
,这是一个 Observable ,而不是 观察员 。在英语中,loginButton.rx.tap
意味着被观察到,而不是要观察。
你可以改为做这样的事情
button.rx.tap
您还可以合并按钮和textField中的流,如上所述:)