Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save alfian0/efbf2572218209a7cede6e1be5d6191a to your computer and use it in GitHub Desktop.
Save alfian0/efbf2572218209a7cede6e1be5d6191a to your computer and use it in GitHub Desktop.
RxSwift Observable on iOS keyboard height
import RxSwift // Version 3.2.0
import RxCocoa // Version 3.2.0
func keyboardHeight() -> Observable<CGFloat> {
return Observable
.from([
NotificationCenter.default.rx.notification(NSNotification.Name.UIKeyboardWillShow)
.map { notification -> CGFloat in
(notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.height ?? 0
},
NotificationCenter.default.rx.notification(NSNotification.Name.UIKeyboardWillHide)
.map { _ -> CGFloat in
0
}
])
.merge()
}
import RxSwift // Version 3.2.0
import RxCocoa // Version 3.2.0
import UIKit
class MyView: UIView {
fileprivate disposeBag = DisposeBag()
init() {
super.init(frame: CGRect.zero)
keyboardHeight()
.observeOn(MainScheduler.instance)
.subscribe(onNext: { (keyboardHeight): CGFloat in
// adjust other views with keyboardHeight
})
.addDisposableTo(disposeBag)
}
required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment