import RxSwift import RxCocoa import UIKit typealias ItemSettingsBlock = (UIItem) -> Void where UIItem: UIView protocol CellFieldJumpingProtocol: FormCellViewModelProtocol { var toolBar: UIToolbar? { get set } var shouldGoForward: PublishSubject { get } var shouldBecomeFirstResponder: PublishSubject { get } var shouldResignFirstResponder: PublishSubject { get } var returnButtonType: UIReturnKeyType { get set } } extension CellFieldJumpingProtocol { func bind(for textField: UITextField, to disposeBag: DisposeBag) { shouldResignFirstResponder.asObservable() .observeOn(MainScheduler.instance) .subscribe(onNext: { [weak textField] _ in textField?.resignFirstResponder() }) .disposed(by: disposeBag) shouldBecomeFirstResponder.asObservable() .observeOn(MainScheduler.instance) .subscribe(onNext: { [weak textField] _ in textField?.becomeFirstResponder() }) .disposed(by: disposeBag) } }