Type de capitalisation automatique UITextField - Application iPhone


112

Existe-t-il un moyen de définir l'autocapitalizationType pour a UITextFieldafin que la première lettre de chaque mot soit en majuscule par défaut?

Ceci est un exemple de ce que je veux


45
D'un autre côté, il est agréable de pouvoir rechercher sur Google 'UITextField capitalization' et de faire apparaître cette fenêtre en 2 secondes, plutôt que de perdre une minute complète pour ouvrir la documentation et rechercher cela. Documentation StackOverflow IS.
Shaun Budhram

1
Trébucher sur des questions comme celle-ci me rend heureux que 1) les gens soient capables de poser des questions directes cohérentes (peu importe la portée) et 2) les gens commentent les meilleurs ***
Will Von Ullrich

Réponses:


237

Utilisation textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

Pour plus d'informations, veuillez lire: UITextInputTraits Protocol Reference


2
Cela n'aide pas si vous passez du texte dans le champ. Dans ce cas
déléguez la

Souhaitez-vous élaborer un peu plus HotJard? J'aimerais savoir comment coller un texte et l'autocapitaliser.
vnchopra

5
Cela ne fonctionne pas, je l'ai essayé sur Xcode 6 iOS 8 Swift. Je l'ai fait dans le générateur de code et d'interface, ni l'un ni l'autre ne fonctionne.
Van Du Tran

10
Assurez-vous que le clavier dans le générateur d'interface est défini par défaut. Sinon, cela ne fonctionnera pas
OscarVGG

3
Assurez-vous également que l'autocapitalisation est activée dans les paramètres du système d'exploitation (paramètres-> général-> clavier), les valeurs des paramètres iOS remplacent tout ce que vous avez défini dans le champ de texte
Lope

38

Ce que nous voulons faire, c'est définir le champ de texte autocapitalizationType.

Objectif c:

self.textfield.autocapitalizationType = UITextAutocapitalizationTypeWords

Rapide:

self.textfield.autocapitalizationType = .words

Il y a quelques options ici:

entrez la description de l'image ici

  • allCharacters équivaut à appuyer deux fois sur la touche Majuscule, essentiellement le verrouillage des majuscules.
  • none est assez explicite, le clavier n'essaiera jamais de mettre les lettres en majuscule.
  • sentences essaiera de mettre en majuscule le mot suivant après une ponctuation de marque de fin.
  • words essaiera de mettre en majuscule chaque nouveau mot (après un espace), ce qui semble être exactement ce que vous recherchez.

Cette propriété peut également être définie à partir de l'inspecteur d'attributs du générateur d'interface lorsque le champ de texte approprié est sélectionné:

entrez la description de l'image ici

"Capitalisation" est la première option de ce groupe, juste passé la sélection de la taille de police minimale pour le champ de texte.


8

Définir la capitalizationpropriété sur "Words" suggérera à l'utilisateur de saisir des mots en majuscules. Cela peut être annulé par l'utilisateur en déplaçant le clavier. La meilleure chose à faire est de mettre les mots en majuscules dans le code:

NSString *text = [myTextField.text capitalizedString];

Cela mettra en majuscule la chaîne entière, UITextAutocapitalizationTypeWords met simplement en majuscule la première lettre de chaque mot tapé.
Jacob

Bien que ce ne soit pas ce que voulait l'OP, je l'ai vraiment trouvé utile! J'avais une NSString enregistrée quelque part, qui était entièrement en majuscules. J'avais besoin de comparer le texte d'un UITextField à la chaîne d'origine, et l'utilisation de votre recommandation m'a évité d'avoir à expliquer les choses à mon utilisateur (j'ai laissé Objective c faire tout le travail
:)

7

Oui. Sur InterfaceBuilder, dans l'inspecteur d'attributs textField, vous pouvez définir la propriété Capitalization sur Words.


6

Il y a une réponse pour Obj-C, je suis ici pour Swift;

textField.autocapitalizationType = UITextAutocapitalizationType.words

ou moyen plus court

textField.autocapitalizationType = .words

J'ai testé .words et .allCharacters. Sur le simulateur, cela fonctionne. Sur un iPhone X connecté, ce n'est pas le cas. Xcode 10.1, iPhone 12.1.
geohei

1
Je ne travaillerai pas si dans le réglage -> Général -> Correction automatique / Capitalisation automatique est désactivé.
Sheetal Shinde

1

Vous pouvez même le faire à partir du fichier Storyboard ou .xib. Il suffit de sélectionner le champ de texte et dans l'inspecteur d'attributs à droite, il y a une section Capitalisation où vous pouvez choisir ce qui vous convient. Dans votre cas, c'est la majuscule "Words".


0

Dans Xamarin.ios / Monotouch, cela a fonctionné pour moi:

textField.AutocapitalizationType = UITextAutocapitalizationType.Words;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.