2012-08-15 9 views
6

Ich versuche, die Tastatur in meiner SplitView-Anwendung zu verbergen (weil sie einen Teil des Hauptmenüs abdeckt). Wie auch immer, das einzige, was ich finden kann ist, wie man die Tastatur versteckt, nachdem ein Textfeld verwendet wurde [TextField resignFirstResponder].Ausblenden des UIKeyboards

Gibt es eine andere Möglichkeit, die Tastatur zu verbergen?
Idealerweise würde ich gerne das barButtonItem verwenden, das das Menü als Auslöser zum Ausblenden der Tastatur anzeigt.

Antwort

12

verwenden:

[[[UIApplication sharedApplication] keyWindow] endEditing:YES]; 
+0

genau das, was ich gesucht habe, funktioniert perfekt! – BloonsTowerDefence

0

Sie müssen die Nachricht -resignFirstResponder an die Instanz eines beliebigen Benutzeroberflächenelements senden, das derzeit den Status eines Erstansprechempfängers hat. Wenn also in Ihrer Klasse eine firstNameTextField Eigenschaft vorhanden ist, die einer Instanz von UITextField entspricht, müssen Sie die Nachricht an dieses Objekt senden.

[self.firstNameTextField resignFirstResponder];

+0

Hat es mit jedem UI-Elemente arbeiten? Kann ich ein UIBarButtonItem verwenden? Mein ganzes Problem ist, dass ich kein spezifisches Textfeld habe, um es zu verbinden. – BloonsTowerDefence

+0

Technisch kann jede Instanz von 'UIView' zum ersten Responder werden, da sie eine Unterklasse von 'UIResponder' ist, aber nur die Tastatur aufruft, wenn die Klasse dem 'UITextInput'-Protokoll entspricht. Um die Tastatur über ein 'UIBarButtonItem' zu schließen, müssen Sie diese Schaltfläche mit einer Methode verbinden, die' resignFirstResponder' im aktiven Textfeld aufruft. Wenn Sie alle Bearbeitungen einfach blind beenden möchten, können Sie auch 'endEditing:' an die Root-Ansicht senden und die Untersichten durchgehen und den Ersthelfer abbrechen, auf welchem ​​Subview es gerade liegt. –

0

resignFirstResponder ist so, wie es zu tun. Wenn Sie eine Situation haben, in der Ihr firstResponder nicht als Instanzvariable eingerichtet ist (vielleicht generiert), können Sie Ihren erstenResponder unter Verwendung von this answer abrufen. Nachdem Sie Ihr erstes Responder-Objekt haben, treten Sie es einfach zurück!

hoffe das hilft.

Verwandte Themen