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

CodeGuy
la source
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

AlexVogel
la source
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.

nhgrif
la source
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];
Evan Mulawski
la source
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.

Marsson
la source
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
Kemal Can Kaynak
la source
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".

mgm
la source
0

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

textField.AutocapitalizationType = UITextAutocapitalizationType.Words;
Daniele D.
la source