2010-08-03 6 views
9

Est-il possible de capturer des séquences de touches de commande dans des applications iPad/iPhone tierces?Raccourcis clavier dans iOS?

Version longue:

Sur mon excellent voyage de découverte vis-à-vis de mon nouvel iPad avec elle est brillant dock clavier, je découvre, à ma grande joie, que lorsque l'édition de texte dans les vues de texte Modèle standard ; commandes allant de ⌘C/⌘P pour copier-coller et^A,^B,^E et amis pour les travaux de saut de ligne et de personnage.

Jusqu'ici tout va bien, ouais? Le problème est, ce comportement passionnant semble limité aux champs de texte, et plus spécifiquement, les champs de texte standard. Ce que j'aimerais vraiment, c'est capturer des événements comme ceux-ci pour mon propre usage. Un problème que je trouve souvent avec beaucoup d'applications est qu'elles ont tendance à être soit proche de l'inutile, ou au moins encombrant, sans le dock clavier (par exemple la suite iWork), ou proche de inutile, ou du moins encombrant , avec le dock clavier (la plupart des autres applications qui ne dépendent pas fortement de la saisie de texte, mais plutôt des gestes tactiles [c'est-à-dire, la plupart des autres applications période]). De nombreux jeux, par exemple Civilization Revolutions, et similaires, bénéficieraient massivement de la simple addition de la possibilité d'utiliser les touches fléchées pour déplacer les unités et la touche d'entrée pour terminer le tour. Donc, la question, alors, comme indiqué ci-dessus: Y at-il un moyen de capturer et de répondre à ces événements afin d'offrir une alternative aux commandes tactiles pour ceux qui le souhaitent et ont le matériel?

Avertissement: Je n'ai pas l'intention de développer des applications qui dépendent exclusivement de la saisie au clavier, et personne d'autre ne devrait le faire. L'interface tactile est primordiale. Ce n'est pas toujours complètement pratique.

+0

Cela ressemble à un doublon: http://stackoverflow.com/questions/3199635/iphone-ipad-keyboard-shortcuts –

Répondre

4

Dans iOS 7, la propriété UIResponderkeyCommands et la classe UIKeyCommand ont été ajoutées pour prendre en charge les raccourcis. Remplacez simplement keyCommands pour retourner un tableau de UIKeyCommand et vous devriez être prêt à partir.

6

Le seul moyen (que je connaisse) d'obtenir des entrées du clavier dans iOS est d'utiliser le protocole UITextInput. Malheureusement, le protocole ne vous donne pas les clés brutes qui ont été pressées, et vous envoie à la place des messages comme "insérer cette chaîne" et "déplacer le curseur vers cette position". Donc, pour savoir qu'une touche fléchée a été pressée, vous devrez creuser. En ce qui concerne les raccourcis avec des touches de modification, comme copier/coller ou annuler/rétablir, Apple semble uniquement prendre en charge les bases et ne vous permet pas de créer des fonctions personnalisées. Ils utilisent des méthodes au UIResponder: –canPerformAction:withSender: et undoManager. Donc, si j'écrivais un jeu et que je voulais profiter du clavier, je le sous-classerais UIResponder et je le ferais conforme au protocole UITextInput. Et puis en faire le premier répondeur. Cependant, cela fera probablement apparaître le clavier logiciel si un clavier physique n'est pas présent.

Mon avertissement: Je ne l'ai pas fait tout le travail difficile à utiliser UITextInput d'une manière qu'il n'a pas été conçu pour être utilisé, donc je ne sais pas comment il serait possible d'obtenir réellement travailler . Et je ne le veux pas vraiment. Au contraire, signalons tous les rapports de bogue pour qu'Apple crée une API qui nous permet d'obtenir une saisie plus précise à partir du clavier.

+0

Le clavier logiciel ne peut pas être empêché de s'ouvrir. Pas avec l'API publique. –

+1

Il peut si vous avez jumelé l'iPhone ou l'iPad avec un clavier matériel. –

+1

Vous pouvez définir un inputView personnalisé à afficher à la place du clavier par défaut, et en le masquant, vous pouvez masquer efficacement le clavier. –

0

À noter: Bien que les détails soient actuellement sous NDA, Apple ajoute la prise en charge des raccourcis clavier/événements dans iOS 7.

Je suppose que cela fonctionnera de la même façon que cela fonctionne sur Mac OS X, qui est brièvement décrit dans this answer à une question similaire.

Questions connexes