isFirstResponder observable with RxSwift
import RxCocoa
import RxSwift
import UIKit
extension Reactive where Base: UIView {
var isFirstResponder: Observable<Bool> {
return Observable
.merge(
methodInvoked(#selector(UIView.becomeFirstResponder)),
methodInvoked(#selector(UIView.resignFirstResponder))
)
.map{ [weak view = self.base] _ in
view?.isFirstResponder ?? false
}
.startWith(base.isFirstResponder)
.distinctUntilChanged()
.share(replay: 1)
}
}
Comments