2009-09-03 4 views
12

Ich entwickle gerade ein OpenGL ES-Spiel für iPhone und iPod touch.Wie kann man ein UIKeyboard ohne UITextField oder UITextView aufrufen?

Ich fragte mich, wie ich das UIKeyboard leicht hochziehen kann? Gibt es eine offizielle, dokumentierte Möglichkeit, ein UIKeyboard ohne Verwendung eines UITextField von UITextView zu ziehen?

+0

möglich Duplikat von [So zeigen Sie die iPhone/iPad-Tastatur über eine Vollbild-OpenGL ES-App] an (http://StackOverflow.com/Questions/7253477/How-to-display-the-Iphone-ipad-Tastatur-) over-a-Vollbild-opengl-es-app) – JosephH

Antwort

14

Es ist nicht "offiziell" möglich - Sie können auf das UIKeyboard-Objekt überhaupt nicht zugreifen, während Sie den Richtlinien von Apple folgen.

Erstellen Sie ein unsichtbares UITextField und rufen Sie dann [textField becomeFirstResponder] auf - Sie könnten sogar zuerst UITextField ableiten und dann die Delegate-Methode textField:shouldChangeCharactersInRange: überschreiben, um die Texteingabe an die gewünschte Stelle umzuleiten.

+0

Finden Sie mehr aktuelle Antwort von @John mit 3.2+ API –

+2

__Diese Antwort ist jetzt falsch__. [Siehe hier für ein Beispiel, wie man vorgeht] (http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard-over-a-full-screen-openg-l-es- app) – bobobobo

0

Ich habe es nicht versucht, aber http://www.cocoadev.com/index.pl?UIKeyboard zeigt einige Code, der aussieht wie es funktionieren sollte.

+1

Ich glaube nicht, UIKeyboard ist offiziell in der SDK ausgesetzt, also vielleicht zu "legal" Sie müssen eine versteckte UITextField verwenden. –

+0

@David - So ist es dann nicht möglich? – Kriem

+0

Der von Ihnen gepostete Code funktioniert nicht. Der Compiler wird Ihnen zwar mitteilen, dass Sie nicht auf die Klasse "UIKeyboard" zugreifen können. – FreeAsInBeer

1

ich die Tastatur ohne sichtbare UITextField angezeigt durch mein Textfeld des Rahmens Positionierung aus dem sichtbaren Bildschirm:

#define TEXT_FRAME     -50,-50,0,0 

self.textField = [[UITextField alloc] initWithFrame:CGRectMake(TEXT_FRAME)]; 

Als ich den „First Responder“ gesetzt wird die Tastatur ohne sichtbaren Eingabebereich sichtbar:

// show the keyboard  
[self.textField becomeFirstResponder]; 

Ich ließ später die Idee fallen. Ich weiß jedoch nicht, ob es den Apple-Richtlinien entspricht.

19

Wenn Sie UIResponder ableiten und das UIKeyInput-Protokoll deklarieren, wird die Tastatur angezeigt, wenn Sie der erste Responder werden.

Siehe UIKeyInput protocol here.

Eine Sache, die mich stolperte, ist, dass Sie die Nachricht canBecomeFirstResponder überschreiben müssen.

+1

Nur 'UIView' Unterklassen, nicht nur _any_ UIResponder Unterklasse. Ich habe versucht, meine AppDelegate (ein UIResponder) Unterklasse, zeigen Sie eine Tastatur und fehlgeschlagen. – paulvs

+0

Nach der Unterklasse von 'UIView', was ist der Unterschied zwischen einem' UITextfield'? Sie müssen alle zum Bildschirm hinzugefügt werden, dann werden Sie zum Ersthelfer, zeigen Sie die Tastatur. – al03

3

Es ist in der Tat möglich. Ich habe mich viel damit gewehrt. UIKeyInput-Protokoll kann verwendet werden, um eine Tastatur ohne Verwendung eines UITextField oder UITextView zu ziehen. Es ist jedoch nur in iOS 3.2 und höher verfügbar. Hier ist eine tutorial darauf.

Hoffe, dass hilft.