2009-09-03 10 views
12

Attualmente sto sviluppando un gioco OpenGL ES per iPhone e iPod touch.Come richiamare una UIKeyboard senza UITextField o UITextView?

Mi chiedevo come posso facilmente sollevare la UIKeyboard? C'è un funzionario , documentato possibilità di aprire una UIKeyboard senza utilizzare un UITextField di UITextView?

+0

possibile duplicato di [Come visualizzare la tastiera dell'iPhone/iPad su un'applicazione OpenGL ES a schermo intero] (http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboard- over-a-full-screen-opengl-es-app) – JosephH

risposta

14

Non è "ufficialmente" possibile: non è possibile accedere all'oggetto UIKeyboard senza rispettare le linee guida di Apple.

Creazione di un UITextField invisibile, quindi chiamando [textField becomeFirstResponder] sarebbe fare il lavoro - si potrebbe anche UITextField sottoclasse, poi eseguire l'override del metodo delegato textField:shouldChangeCharactersInRange: per reindirizzare l'input di testo in cui si vuole andare.

+0

Vedere la risposta più aggiornata di @john utilizzando l'API 3.2+ –

+2

__Questa risposta ora è sbagliata__. [Vedi qui per un esempio di come fare] (http://stackoverflow.com/questions/7253477/how-to-display-the-iphone-ipad-keyboardoverover-a-lyl-screen-opengl-es- app) – bobobobo

0

Non l'ho provato ma http://www.cocoadev.com/index.pl?UIKeyboard mostra un codice che sembra dovrebbe funzionare.

+1

Non penso che UIKeyboard sia ufficialmente esposto nell'SDK, quindi forse per essere "legale" devi usare un UITextField nascosto. –

+0

@David - Quindi non è possibile allora? – Kriem

+0

Il codice che hai postato non funziona. Sebbene possa essere valido, il compilatore ti comunicherà che non puoi accedere alla classe 'UIKeyboard'. – FreeAsInBeer

1

io visualizzata la tastiera senza UITextField visibili posizionando telaio del mio textfield dallo schermo visibile:

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

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

quando si imposta il "primo responder" tastiera diventa visibile senza alcuna immissione visibili:

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

Più tardi ho lasciato cadere l'idea. Tuttavia, non conosco la sua conformità alle linee guida Apple.

19

Se si sottoclasse UIResponder e si dichiara il protocollo UIKeyInput, la tastiera verrà visualizzata quando si diventa FirstResponder.

Vedere UIKeyInput protocol here.

Una cosa che mi ha fatto inciampare è che dovrai sovrascrivere il messaggio canBecomeFirstResponder.

+1

Solo sottoclassi 'UIView', non solo _query_Universer sottoclasse. Ho provato a creare la sottoclasse AppDelegate (un UIResponder), mostrare una tastiera e fallire. – paulvs

+0

Dopo la sottoclasse di 'UIView', qual è la differenza tra un' UITextfield'? devono essere tutti aggiunti allo schermo, quindi diventare il primo risponditore, mostrare la tastiera. – al03

3

In effetti è possibile. Mi sono fatto un sacco di cose con questo. Il protocollo UIKeyInput può essere utilizzato per estrarre una tastiera senza utilizzare UITextField o UITextView. Tuttavia è disponibile solo in iOS 3.2 e versioni successive. Ecco uno tutorial su quello.

Spero che questo aiuti.

Problemi correlati