2009-09-03 15 views
12

Actualmente estoy desarrollando un juego OpenGL ES para iPhone y iPod touch.Cómo extraer un UIKeyboard sin un UITextField o UITextView?

Me preguntaba cómo puedo levantar fácilmente el UIKeyboard? ¿Existe un oficial, documentado posibilidad de desplegar un UIKeyboard sin utilizar un UITextField de UITextView?

+0

posible duplicado de [Cómo mostrar el teclado de iPhone/iPad en una aplicación de OpenGL ES a pantalla completa] (http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard- over-a-full-screen-opengl-es-app) – JosephH

Respuesta

14

No es "oficialmente" posible, no se puede acceder al objeto UIKeyboard en absoluto mientras se mantiene dentro de las pautas de Apple.

Creación de un UITextField invisible, a continuación, llamar [textField becomeFirstResponder] haría el trabajo - incluso se podría UITextField subclase primero, y luego reemplazar el método delegado textField:shouldChangeCharactersInRange: para redirigir la entrada de texto a donde quiera que vaya.

+0

Ver respuestas más actualizadas de @john usando 3.2+ API –

+2

__Esta respuesta ahora es incorrecta__. [Vea aquí un ejemplo de cómo hacerlo] (http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard-over-a-full-screen-opengl-es- aplicación) – bobobobo

0

No lo he intentado pero http://www.cocoadev.com/index.pl?UIKeyboard muestra algún código que parece que debería funcionar.

+1

No creo que UIKeyboard esté oficialmente expuesto en el SDK, así que quizás para ser "legal" debe usar un UITextField oculto. –

+0

@David - ¿Entonces no es posible? – Kriem

+0

El código que ha publicado no funciona. Si bien puede ser válido, el compilador le informará que no puede acceder a la clase 'UIKeyboard'. – FreeAsInBeer

1

que muestra el teclado sin ningún UITextField visibles mediante el posicionamiento del marco de mi campo de texto de la pantalla visible:

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

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

Cuando me puse el "primer nivel de respuesta" del teclado se hace visible sin ninguna área de entrada visibles:

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

Más tarde se me pasó la idea. Sin embargo, no sé su conformidad con las directrices de Apple.

19

Si subclase UIResponder y declara el protocolo UIKeyInput, el teclado aparecerá cuando se convierta en el primer Respondedor.

Ver el UIKeyInput protocol here.

Una cosa que me ha sorprendido es que tendrás que anular el mensaje canBecomeFirstResponder.

+1

Solo subclases 'UIView', no solo _any_ subclase UIResponder. Traté de hacer que mi subclase AppDelegate (un UIResponder), muestre un teclado y fallara. – paulvs

+0

Después de la subclase de 'UIView', ¿cuál es la diferencia entre un' UITextfield'? todos tienen que ser agregados a la pantalla, luego convertirse en el primer respondedor, mostrar el teclado. – al03

3

De hecho es posible. Yo mismo he luchado mucho con esto. El protocolo UIKeyInput se puede utilizar para extraer un teclado sin utilizar un UITextField o UITextView. Sin embargo, solo está disponible en iOS 3.2 y versiones posteriores. Aquí hay un tutorial sobre eso.

Espero que ayude.

Cuestiones relacionadas