2010-08-03 17 views
9

È possibile acquisire sequenze di tasti di comando in app per iPad/iPhone di terze parti?Tasti di scelta rapida in iOS?

Versione lunga:

Sul mio eccellente viaggio alla scoperta di vis-a-vis il mio nuovo iPad con la sua scintillante dock tastiera, ho scoperto, con mia grande gioia, che quando la modifica del testo in un problema di standard viste di testo ; comandi che vanno da ⌘C/⌘P per copia-incolla e^A,^B,^E e amici per le operazioni di salto di linea e di carattere.

Fin qui tutto bene, sì? Il problema è che questo avvincente comportamento sembra limitato ai campi di testo e, più specificamente, ai campi di testo di emissione standard. Quello che mi piacerebbe davvero è catturare eventi come questi per mio uso personale.

Un problema che spesso riscontro in molte app è che tendono a essere quasi inutili o almeno ingombranti, senza la tastiera (ad esempio iWork Suite) o quasi inutili o almeno ingombranti , con la tastiera dock (la maggior parte delle altre applicazioni che non si basano molto sull'input di testo, ma piuttosto sui gesti tattili [vale a dire, la maggior parte delle altre applicazioni]).

Molti giochi, ad esempio Civilization Revolutions e simili, beneficerebbero in modo massivo solo della semplice aggiunta della possibilità di utilizzare i tasti freccia per spostare le unità e il tasto Invio per terminare la svolta.

Quindi la domanda, quindi, come indicato sopra: esiste un modo per acquisire e rispondere a questi eventi al fine di offrire un'alternativa ai comandi touch per coloro che desiderano questo e hanno l'hardware?

Declinazione di responsabilità: Non ho intenzione di sviluppare applicazioni che si basano esclusivamente sull'input da tastiera, ovviamente, e nemmeno su altri. L'interfaccia touch è fondamentale. Non è sempre completamente pratico.

+0

Sembra un duplicato: http://stackoverflow.com/questions/3199635/iphone-ipad-keyboard-shortcuts –

risposta

4

In iOS 7, sono state aggiunte le proprietàe UIKeyCommand per supportare le scorciatoie. Basta eseguire l'override di keyCommands per restituire un array di UIKeyCommand e dovresti essere pronto.

6

L'unico modo (che io sappia) per ottenere input dalla tastiera in iOS è utilizzare il protocollo UITextInput. Sfortunatamente, il protocollo non ti fornisce le chiavi non elaborate che sono state premute e invece ti invia messaggi come "inserisci questa stringa" e "sposta il cursore in questa posizione". Quindi, per sapere che è stato premuto un tasto freccia, è necessario eseguire alcuni scavi.

Come per le scorciatoie con i tasti modificatori, come copia/incolla o annulla/ripristina, Apple sembra solo supportare le basi e non consente di crearne di personalizzate. Usano i metodi in UIResponder: –canPerformAction:withSender e undoManager.

Quindi, se dovessi scrivere un gioco e volevo approfittare della tastiera avrei sottoclasse UIResponder e lo hanno conformi al protocollo UITextInput. E poi fallo diventare il primo soccorritore. Ciò tuttavia probabilmente farà apparire la tastiera del software se non ne è presente una fisica.

mia disclaimer: non ho fatto tutto il lavoro duro per usare UITextInput in un modo che non è stato pensato per essere utilizzato, quindi non so come sarebbe fattibile per ottenere effettivamente funzionare . E io non voglio davvero. Piuttosto, facciamo tutte le segnalazioni di bug per ottenere da Apple la creazione di un'API che ci consenta di ottenere input più precisi dalla tastiera.

+0

La tastiera del software non può essere mantenuta da spuntare. Non con API pubbliche. –

+1

Può se abbinato iPhone o iPad con una tastiera hardware. –

+1

È possibile impostare un inputView personalizzato da visualizzare al posto della tastiera predefinita, e impostando quella vista da nascondere si può effettivamente nascondere la tastiera. –

0

Vale la pena menzionare: Sebbene i dettagli siano attualmente in NDA, Apple sta aggiungendo il supporto per le scorciatoie da tastiera/eventi in iOS 7.

Sospetto che funzioni in modo simile a come funziona su Mac OS X, che è brevemente descritto in this answer in una domanda simile.

Problemi correlati