我想觀察iOS鍵盤的高度。我如何用RxSwift做到這一點?如何創建一個發出鍵盤高度的RxSwift Observable?
0
A
回答
0
這裏是你如何建立一個Observable
發出鍵盤的高度:https://gist.github.com/laurilehmijoki/193332408964ad53e1cc236387ec6e46
0
如果你只在鍵盤的高度興趣,你可以觀察UIKeyboardDidChangeFrame
通知
let keyboardHeight = NotificationCenter.default.rx
.notification(NSNotification.Name.UIKeyboardDidChangeFrame)
.map { notification -> CGFloat in
(notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.height ?? 0
}
注那些鍵盤的高度即使在離開屏幕時也會保持「完整」。這些通知僅對由於鍵盤語言更改或顯示/隱藏自動完成按鈕而導致的幀更改感興趣。
如果您想知道鍵盤的框架在屏幕上時爲0,則可以將上述可觀察事件與UIKeyboardWillShow
和UIKeyboardHide
通知結合使用。
enum KeyboardState {
case onScreen
case offScreen
}
let keyboardOnScreenHeight = Observable.from([
NotificationCenter.default.rx.notification(NSNotification.Name.UIKeyboardWillShow)
.map { _ in KeyboardState.onScreen }
NotificationCenter.default.rx.notification(NSNotification.Name.UIKeyboardWillHide)
.map { _ in KeyboardState.offScreen }
])
.merge()
.flatMapLatest { state in
switch state {
case .onScreen: keyboardHeight
case .offScreen: .just(0)
}
}
從此,您將獲得由先前發出的值定義keyboardHeight
當它是在屏幕上,而0時,它退出了。
相關問題
- 1. RxSwift基於變量構建一個Observable
- 2. RxSwift多訂閱一個observable
- 3. 如何提高SwiftKey的鍵盤高度?
- 4. 鍵盤高度0
- 5. 如何從查詢創建一個Observable?
- 6. 如何在鍵盤出現時降低彈出高度?
- 7. 如何檢測是否一個observable沒有發射任何事件在RxSwift
- 8. 日本鍵盤的高度
- 9. 如何確定虛擬鍵盤高度?
- 10. 如何獲得Android軟鍵盤高度?
- 11. 如何在鍵盤出現點擊時管理UITextField的高度?
- 12. RxSwift - 當observable發生變化但只發出最後一個值時如何重試?
- 13. 創建一個安卓鍵盤字典
- 14. 鍵盤高度被稱爲
- 15. 鍵盤高度變化
- 16. 如何創建一個完全適合鍵盤之上的UITextView?
- 17. 如何創建一個新的手勢鍵盤
- 18. 如何只創建一次observable?
- 19. 如何創建一次發出項目,然後從BehaviorSubject onComplete的Observable?
- 20. 如何創建光標Observable
- 21. 如何從Runnable創建Observable?
- 22. 如何從XHR創建Observable
- 23. 如何在Kivy中創建一個鍵盤綁定(Ctrl + O)?
- 24. 如何創建一個數字鍵盤作爲控件?
- 25. 如何創建一個去鍵盤主題?
- 26. 如何從鍵盤爲QTableWidget創建一個SIGNAL?
- 27. 增加鍵盤按鍵排高度
- 28. 創建自己的庫取決於RxSwift還需要導入RxSwift?
- 29. 自定義Android鍵盤:如何創建輔助鍵盤
- 30. 如何創建自定義鍵盤