Revolucent icon

isFirstResponder observable with RxSwift

Revolucent | PRO | 10/05/18 02:54:41 AM UTC | 0 ⭐ | 1140 👁️ | Never ⏰ | []
Swift |

560 B

|

None

|

0 👍

/

0 👎

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