Wie kann ich programmgesteuert überprüfen, ob eine Tastatur in der iOS App vorhanden ist?
Muss ich überprüfen Sie den Zustand der Tastatur Sichtbarkeit in meiner iOS-app.
Pseudocode:
if(keyboardIsPresentOnWindow) {
//Do action 1
}
else if (keyboardIsNotPresentOnWindow) {
//Do action 2
}
Wie kann ich das überprüfen?? Zustand?
InformationsquelleAutor der Frage Jitendra Singh | 2009-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
drawnonward code ist sehr nah, aber kollidiert mit UIKit-namespace und erleichtert werden könnte, zu verwenden.
InformationsquelleAutor der Antwort rpetrich
...oder nehmen den einfachen Weg:
Wenn man in ein textField, es wird first responder und die Tastatur erscheint.
Sie können überprüfen Sie den status der Tastatur mit
[myTextField isFirstResponder]
. Wenn es zurückYES
sind, dann werden die Tastatur aktiv ist.InformationsquelleAutor der Antwort thpitsch
Ich glaube, Sie müssen verwenden Sie die Benachrichtigungen, die über die Tastatur:
Aus: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html
InformationsquelleAutor der Antwort beggs
Erstellen Sie eine
UIKeyboardListener
wenn Sie wissen, dass die Tastatur nicht sichtbar ist, zum Beispiel durch aufrufen[UIKeyboardListener shared]
ausapplicationDidFinishLaunching
.InformationsquelleAutor der Antwort
Mit dem Fenster Untersicht Hierarchie als Indiz für die Tastatur zeigt ein hack ist. Wenn Apple changers Ihre zugrunde liegenden Implementierung alle diese Antworten brechen würde.
Der richtige Weg wäre die monitor-Tastatur ein-und ausblenden von Benachrichtigungen Breite Anwendung wie in Ihrem App-Delegate:
In AppDelegate.h:
In AppDelegate.m:
Dann können Sie prüfen mit:
Anzumerken ist die Tastatur ein - /ausblenden von Benachrichtigungen wird nicht ausgelöst, wenn der Benutzer wird über eine bluetooth-oder eine externe Tastatur.
InformationsquelleAutor der Antwort Vlad
Swift 3 Umsetzung
InformationsquelleAutor der Antwort Christos Hadjikyriacou
Dies ist aus der iOS-Text-Programming Guide, veröffentlicht von Apple hier: https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html
Grundsätzlich call "registerForKeyBoardNotifications" in Ihrem ViewDidLoad. Dann jedes mal, wenn die Tastatur aktiv ist, "keyboardWasShown" genannt wird. Und jedes mal, wenn die Tastatur verschwindet, "keyboardWillBeHidden" genannt wird.
InformationsquelleAutor der Antwort Scuttle
Nun in iOS8 diese Lösung natürlich nicht funktioniert.
Geschrieben wurde es ursprünglich für IOS4/5.
Probieren Sie diese Lösung:
InformationsquelleAutor der Antwort malex
Ein paar Beobachtungen:
Die empfohlenen Muster für ein singleton-Objekt wäre wie folgt. dispatch_once stellt sicher, dass die Klasse initialisiert wird, sobald in einer thread-sicheren Weg, und die statische variable ist nicht sichtbar außerhalb. Und es ist standard-GCD, also kein wissen über low-level-details von Objective-C.
In der Regel wollen Sie nicht nur wissen, ob die Tastatur sichtbar ist oder nicht, sondern wie groß es ist. Keyboards haben nicht alle die gleiche Größe. iPhone-Tastaturen sind kleiner als iPad-Tastaturen. So wollen Sie eine andere Eigenschaft
@property (readonly, nonatomic) CGRect keyboardRect;
die in der noticeShowKeyboard: Methode wie diese:Wichtig zu bemerken, dass das Rechteck in UIWindow Koordinaten und nicht respektiert, Bildschirm-rotation. Also der Anrufer konvertieren Sie das Rechteck durch aufrufen
Wenn der Benutzer dreht den Bildschirm, während die Tastatur sichtbar ist, die app wird gesagt, dass die Tastatur ausgeblendet, dann wieder eingeblendet. Wenn es gezeigt wird, die anderen Ansichten sind die meisten wahrscheinlich noch nicht gedreht. Also, wenn Sie beobachten, Tastatur ein - /ausblenden Ereignisse selbst, konvertieren Sie die Koordinaten, wenn Sie Sie wirklich benötigen, nicht in der Meldung.
Wenn der Benutzer teilt oder undocks der Tastatur, oder verwendet eine hardware-Tastatur, die Benachrichtigungen werden immer die Tastatur ausgeblendet. Ausdocken oder die Zusammenlegung der Tastatur, senden Sie eine "Tastatur angezeigt werden" Meldung.
Der listener muss initialisiert werden, wenn die Tastatur ausgeblendet ist, sonst wird die erste Benachrichtigung verpasst werden, und es wird angenommen, dass die Tastatur wird ausgeblendet, wenn es nicht.
So ist es sehr wichtig zu wissen, was Sie eigentlich wollen. Dieser code ist nützlich, um Dinge bewegen, aus dem Weg von der Tastatur (mit einem split-oder abgedockt Tastatur, das ist die Verantwortung des Benutzers). Es muss Ihnen nicht sagen, ob der Benutzer kann eine Tastatur auf dem Bildschirm (im Falle eines split-Tastatur). Es muss Ihnen nicht sagen, ob der Benutzer eingeben können (zum Beispiel, wenn es eine hardware-Tastatur). Ein Blick auf andere windows funktioniert nicht, wenn die app schafft andere windows selbst.
InformationsquelleAutor der Antwort Chris
Und hier ist, wie es in Swift:
Vergessen Sie nicht aufheben können:
Und wenn Sie wollen, entlassen Sie die Tastatur nach drücken der "Return" - Taste:
InformationsquelleAutor der Antwort Teodor Ciuraru
Swift Umsetzung:
Da swift nicht ausführen Klasse laden Methode beim Start ist es wichtig zu Beginn ist dieser Dienst auf app-Start:
InformationsquelleAutor der Antwort Prcela
Versuchen, diese Funktion
}
aus: iOS: Wie Sie Zugang zu den `UIKeyboard`?
InformationsquelleAutor der Antwort Vanguarder
BOOL isTxtOpen = [txtfieldObjct isFirstReponder]. Wenn gibt es JA, dann ist das die Tastatur aktiv ist.
InformationsquelleAutor der Antwort Hardik Mamtora
Überprüfen Wetter-Tastatur ist erschienen, wir können die Tastatur verwenden vordefinierte Meldungen.
UIKeyboardDidShowNotification ,UIKeyboardDidHideNotification
Beispielsweise kann ich den folgenden code verwenden, hören Sie die Tastatur Benachrichtigung
//Listen für Tastatur-Erscheinungen und Entführungen
in den Methoden, die ich bekommen kann Benachrichtigungen
InformationsquelleAutor der Antwort Manoj Singhal
Dies ist meine Lösung, es kapselt alles in einem einzigen statische Methode, und rufen Sie es überall zu überprüfen:
InformationsquelleAutor der Antwort pthr
Können Sie iterativ überprüfen Sie alle textviews, Textfelder und Beschriftungen in den Unteransichten der übergeordneten Ansicht zu sehen, wenn alle sind die first responder mit so etwas wie dies:
InformationsquelleAutor der Antwort Albert Renshaw
Ich denke, dies kann u helfen,
Dank,
Naveen Shan
InformationsquelleAutor der Antwort Naveen Shan