Ich möchte die Höhe der iOS-Tastatur beobachten. Wie mache ich das mit RxSwift?Wie erstelle ich ein RxSwift Observable, das die Höhe der Tastatur ausgibt?
Antwort
Hier ist, wie können Sie eine Observable
bauen, die die Höhe der Tastatur aussendet: https://gist.github.com/laurilehmijoki/193332408964ad53e1cc236387ec6e46
Wenn Sie daran interessiert sind nur in der Höhe der Tastatur sind, können Sie UIKeyboardDidChangeFrame
Benachrichtigungen
let keyboardHeight = NotificationCenter.default.rx
.notification(NSNotification.Name.UIKeyboardDidChangeFrame)
.map { notification -> CGFloat in
(notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.height ?? 0
}
Hinweis beachten dass die Höhe der Tastatur auch dann "voll" bleibt, wenn sie nicht auf dem Bildschirm angezeigt wird. Diese Benachrichtigungen sind nur für Frame-Änderungen interessant, die auf Sprachänderungen der Tastatur oder das Anzeigen/Verbergen der Auto-Vervollständigen-Buttons zurückzuführen sind.
Wenn Sie wissen möchten, dass der Rahmen der Tastatur 0 ist, wenn der Bildschirm ausgeht, können Sie die obigen Observablen mit UIKeyboardWillShow
und UIKeyboardHide
Benachrichtigungen kombinieren.
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)
}
}
Daraus werden Sie die Werte von zuvor keyboardHeight
definiert emittiert erhalten, wenn es auf dem Bildschirm ist, und 0, wenn sie es verlässt.
- 1. RxSwift Erstelle ein Observable basierend auf einer Variablen
- 2. Wie erstelle ich ein Element, das die Höhe
- 3. Wie erstelle ich ein Observable in Android?
- 4. RxSwift - mehrere Observable Wert innerhalb einer Observable
- 5. WordPress - Wie erstelle ich einen Shortcode, der einen CPT ausgibt
- 6. Wie erstelle ich Observable von XHR
- 7. RxSwift: Verbinde mit verbindbaren Observable multiple Zeiten
- 8. Richtiger Weg, eine einmalige Observable in RxSwift
- 9. RxSwift: Observable, während eine Schaltfläche gedrückt
- 10. RxSwift Observable aktualisiert die Tabellenansicht nicht, wenn Daten geändert werden.
- 11. RxSwift Erweiterung Observable generischer Typ Problem
- 12. Wie erstelle ich ein benutzerdefiniertes Tastatur-Overlay-Menü für OSX?
- 13. Wie erstelle ich eine Observable von der Abfrage?
- 14. Erstelle ein Observable von einem Edit-Text
- 15. Wie bekomme ich Android Soft Tastatur Höhe?
- 16. RxSwift: Wie benutze ich shareReplay um ein Abonnement zu bekommen
- 17. Wie schreibe ich ein Programm, das den Quellcode ausgibt
- 18. Wie erstelle ich ein Observable eines Arrays aus einer Reihe von Observablen?
- 19. Wie erstelle ich eine Velocity-Vorlage, die zwei '#' Litterals am Anfang der Zeile ausgibt?
- 20. RxJava: Wie mache ich eine Observable Observable?
- 21. UIScrollView Höhe mit Tastatur
- 22. Wie kann ich eine Observable abbestellen?
- 23. Wie erstelle ich eine rxjs Observable von einer Methode
- 24. Wie soll ich UITableViewCell mit RxSwift aktualisieren?
- 25. Wie RxSwift beobachtbar und Ergebnis
- 26. RxSwift Paginierung
- 27. Ein Ereignis in RxSwift manuell senden
- 28. Wie kann man das nächste Signal manuell an eine Observable in RxSwift senden?
- 29. Wie erstelle ich ein TableLayout, das den Elternteil füllt und Zeilen mit gleicher Höhe hat?
- 30. Windows 10 Mobile Höhe der Soft-Tastatur