Détection de la langue d'entrée actuelle de l'iPhone
Quelqu'un sait, peut-on obtenir la langue de saisie actuelle et/ou la disposition du clavier de l'application iPhone? Puis-je également recevoir une notification lors de la saisie de la langue a changé?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Dans l'iOS 4.2 et versions ultérieures, vous pouvez utiliser le
UITextInputMode
de la classe de déterminer la langue principale utilisée actuellement pour la saisie de texte.[UITextInputMode currentInputMode].primaryLanguage
vous donnera uneNSString
représentant la BCP 47 code de la langue tels que “es”, “fr-fr”, ou “fr-CA”.Vous pouvez vous inscrire pour le
UITextInputCurrentInputModeDidChangeNotification
pour être averti quand le mode d'entrée change.(Vous pourriez également être intéressé par le "L'obtention de Votre Apps Prêt pour la Chine et d'autres à Chaud de Nouveaux Marchés" de la WWDC session, et L'Internationalisation Des Sujets De Programmation.)
Vous pouvez demander de l'actuelle première répondeur (UITextField, UISearchBar, etc.) via UIResponder méthode textInputMode:
Vous pouvez ajouter un observateur à la valeur par défaut de notification center:
Cette méthode permet d'imprimer la langue d'entrée sélectionnée (comme
"en_US"
ou"de_DE"
):MAIS: Tous les ci-dessus n'est pas documentée et vous ne devriez pas l'utiliser dans le code de la navigation!
De la Pomme de Référence de la Bibliothèque - "L'obtention de la Langue et les paramètres Régionaux":
La façon dont je voudrais faire c'est comme suit:
Enregistrer votre ViewController en tant qu'auditeur à
UIApplicationDidBecomeActiveNotification
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil];
Dans applicationDidBecomeActive gestionnaire, vérifier le langage courant à l'aide de
[NSLocale preferredLanguages]
et d'agir en conséquence.Cette approche vous donne ce que vous voulez et est totalement livrables sans avoir à utilisation privée de l'API.
En ligne avec les réponses les plus fréquentes, la suite est une solution générique à l'obtention de la langue du clavier à chaque fois qu'il est modifié. S'inscrire pour la notification
UITextInputCurrentInputModeDidChangeNotification
:Puis dans
inputModeDidChange
Où
currentFirstResponder
est à partir d'une catégorie sur UIView pour obtenir le premier intervenant de la vue, comme il est suggéré dans cette DONC post:Mise en œuvre