Autocapitalisation est un mécanisme iOS qui convertit automatiquement la première lettre du texte saisi en majuscule dans certains contextes. UIKit fournit la propriété autocapitalizationType dans le protocole UITextInputTraits avec quatre modes : none, words, sentences et allCharacters. Selon l'Apple Text Programming Guide (2025), une configuration correcte de l'autocapitalisation améliore l'expérience utilisateur et réduit le nombre de corrections manuelles lors de la saisie. Utilisez le mode sentences pour la plupart des champs de texte et none pour les noms d'utilisateur et mots de passe.
Points essentiels
L'autocapitalisation est une fonctionnalité du système d'exploitation iOS qui convertit automatiquement le premier caractère du texte en majuscule lorsque certaines conditions sont remplies. Le mécanisme est contrôlé via la propriété autocapitalizationType, disponible pour tous les éléments implémentant le protocole UITextInputTraits : UITextField, UITextView et UISearchBar.
La fonctionnalité opère au niveau du moteur de texte iOS et s'active au moment de la saisie de chaque caractère. Le système analyse la position du curseur et le texte environnant pour déterminer s'il doit mettre en majuscule le caractère actuel. Si la condition est remplie, iOS remplace automatiquement la lettre minuscule par une majuscule avant qu'elle ne s'affiche dans le champ.
Selon les Apple Human Interface Guidelines (2025), l'autocapitalisation fait partie d'un système plus large de saisie prédictive qui inclut également la correction automatique et la saisie de texte prédictive. L'utilisateur peut désactiver toutes ces fonctionnalités globalement dans les réglages système (Réglages > Général > Clavier), mais le développeur les contrôle également au niveau de champs spécifiques.
Contrairement à la correction automatique, l'autocapitalisation n'utilise pas de modèle de langage — elle fonctionne par des règles simples : après un point et un espace, au début du texte, après un caractère de nouvelle ligne. L'exception est le mode words, où la première lettre de chaque mot est mise en majuscule indépendamment du contexte.
UITextAutocapitalizationType est une énumération de quatre valeurs qui définissent la stratégie de conversion automatique de casse. Chaque mode est conçu pour un type spécifique de champ de texte et résout une tâche particulière d'expérience utilisateur.
Le mode .none désactive complètement la conversion automatique de casse. Tous les caractères sont saisis dans la forme où l'utilisateur les tape. Ce mode est obligatoire pour les champs de mot de passe, les adresses email, les surnoms, les recherches et tout champ où la casse est importante pour le traitement des données côté serveur.
Le mode .words met en majuscule la première lettre de chaque mot saisi. Le système détermine les limites des mots par les espaces et convertit le premier caractère après un espace en majuscule. Ce mode est pratique pour les champs de prénom, nom, noms de villes, rues et autres champs où chaque mot doit commencer par une majuscule.
Le mode .sentences est le plus courant et est utilisé par défaut pour la plupart des champs de texte. Le système met en majuscule la première lettre après un point, un point d'exclamation ou un point d'interrogation suivi d'un espace. Ce mode est idéal pour les notes, messages, commentaires et autres champs de texte multilignes.
Le mode .allCharacters convertit tous les caractères saisis en majuscules. Ce mode équivaut à maintenir la touche Verr Maj enfoncée en permanence et est utilisé pour les champs où les données doivent être en majuscules : codes postaux, codes pays, abréviations, numéros de commande. À utiliser avec prudence, car le texte en majuscules est plus difficile à lire.
| Mode | Description | Exemple de saisie | Recommandation |
|---|---|---|---|
| .none | Aucun changement | jean@mail.com | Email, mots de passe, recherche |
| .words | Chaque mot | Jean Dupont | Nom, adresse, ville |
| .sentences | Début de phrase | Bonjour. Comment allez-vous ? | Messages, notes |
| .allCharacters | Tout majuscules | ABC-123 | Codes, index |
Le mécanisme d'autocapitalisation s'active lors du traitement de la pression d'une touche, avant que le caractère ne soit affiché à l'écran. Lorsque l'utilisateur appuie sur une touche, UITextInputTraits vérifie la position actuelle du curseur et applique la règle de conversion de casse selon l'autocapitalizationType défini.
Pour le mode .sentences, le système suit les caractères déclencheurs : point (.), point d'exclamation (!), point d'interrogation (?), et le caractère de nouvelle ligne ( ) lorsqu'il est activé. Après avoir détecté un caractère déclencheur et l'espace suivant, le système définit un indicateur « majuscule attendue » pour le prochain caractère saisi.
Le mode .words suit le caractère d'espace comme déclencheur. Après chaque espace, le système s'attend à une majuscule pour le mot suivant. Cependant, il existe des exceptions : après un trait d'union, une apostrophe et d'autres signes de ponctuation à l'intérieur d'un mot, aucune majuscule n'est insérée. Par exemple, « O’Brien » reste correct.
Une caractéristique importante est que l'autocapitalisation ne fonctionne que sur le premier caractère d'un mot. Si l'utilisateur saisit un mot contenant des majuscules au milieu (par exemple iPhone ou macOS), le système ne les modifie pas, car la conversion ne s'applique qu'au premier caractère après le déclencheur. Cela signifie que les noms de marques et produits avec une casse non standard ne seront pas affectés.
L'autocapitalisation doit être désactivée dans les champs où la casse est importante pour le traitement correct des données. Cas courants : champs d'adresse email, surnoms et noms d'utilisateur, mots de passe, recherches, URLs, codes de confirmation, IMEI et numéros de série. Dans tous ces cas, les modifications automatiques de casse entraîneront des erreurs lors du traitement côté serveur.
Pour les champs de recherche (UISearchBar), l'autocapitalisation est désactivée par défaut, ce qui correspond aux attentes des utilisateurs. Une requête de recherche peut être saisie dans n'importe quelle casse et le serveur la convertit généralement en minuscules lui-même. Si l'autocapitalisation est activée pour la recherche, l'utilisateur devra corriger manuellement la majuscule au début de chaque requête.
Dans les formulaires d'inscription, le champ de nom d'utilisateur ou de surnom doit être en mode .none, car de nombreux systèmes distinguent la casse dans les noms d'utilisateur. Le champ email doit également être sans autocapitalisation — bien que les noms de domaine ne soient pas sensibles à la casse, la partie locale de l'email peut théoriquement l'être, même si c'est rare en pratique.
Selon la Documentation Développeur Apple, les champs avec secureTextEntry (mots de passe) héritent automatiquement d'autocapitalizationType = .none, même si le développeur a explicitement défini une autre valeur. Le système a la priorité la plus élevée pour la saisie sécurisée et ignore toute tentative d'activer l'autocapitalisation pour un champ de mot de passe.
La configuration de l'autocapitalisation en Swift se fait via la propriété autocapitalizationType. La propriété est disponible pour UITextField, UITextView et UISearchBar. La valeur peut être définie à la fois dans le code et via Interface Builder dans l'inspecteur d'attributs, où le mode est appelé Capitalization.
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
Pour un formulaire de contact, configurez chaque champ selon sa sémantique : nom — .words, email — .none, message — .sentences. Cette combinaison offre la meilleure expérience utilisateur et minimise le besoin de correction manuelle de la casse.
class ContactFormViewController: UIViewController {
@IBOutlet var nameField: UITextField!
@IBOutlet var emailField: UITextField!
@IBOutlet var messageView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
nameField.autocapitalizationType = .words
emailField.autocapitalizationType = .none
messageView.autocapitalizationType = .sentences
}
}
Pour les changements de mode programmatiques à l'exécution, utilisez le délégué UITextFieldDelegate. Par exemple, si un champ peut être utilisé dans différents contextes, modifiez autocapitalizationType dans la méthode textFieldDidBeginEditing en fonction du mode de fonctionnement actuel du formulaire.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
L'autocapitalisation dépend de la langue de saisie définie sur le clavier de l'utilisateur. Différentes langues peuvent avoir des règles de conversion de casse différentes. Par exemple, en turc, la lettre « i » en majuscule devient « İ » (avec point), tandis que « I » en minuscule devient « ı » (sans point). iOS gère ces particularités automatiquement.
Pour le russe, l'autocapitalisation suit les mêmes règles que l'anglais : majuscule après un point, au début d'une phrase et après une nouvelle ligne. Des problèmes peuvent survenir avec la lettre « yo » — bien qu'elle soit présente dans le dictionnaire système, toutes les dispositions de clavier ne l'affichent pas sur la couche principale, et l'autocapitalisation convertit correctement « yo » en « Yo ».
Pour le chinois, le japonais et le coréen, l'autocapitalisation ne s'applique pas, car ces langues n'ont pas de concept de casse. Le mode autocapitalizationType est ignoré par le système lors de l'utilisation des claviers correspondants, et le champ se comporte de la même manière qu'en mode .none, quelle que soit la valeur définie.
Pour l'arabe et l'hébreu, l'autocapitalisation ne s'applique pas non plus, car ces langues utilisent leur propre système d'écriture sans distinction entre majuscules et minuscules. Le système iOS détecte correctement la langue de saisie et ignore les paramètres d'autocapitalisation pour les langues où ce concept n'existe pas.
Foire aux questions
Oui, la propriété autocapitalizationType peut être modifiée à tout moment, même lorsque le champ est déjà actif. Le changement prendra effet à la prochaine saisie de caractère.
Oui, pour les champs avec isSecureTextEntry = true, le système définit automatiquement autocapitalizationType = .none. Ce comportement ne peut pas être modifié par programmation.
Oui, UITextView supporte entièrement autocapitalizationType. C'est particulièrement utile pour les champs multilignes où le mode .sentences fonctionne le plus naturellement.
Si un champ n'est pas marqué comme secureTextEntry mais est utilisé pour la saisie d'un mot de passe, l'autocapitalisation peut modifier le mot de passe. Désactivez-la toujours pour les champs où la casse est importante.
Sur le simulateur, l'autocapitalisation fonctionne via le clavier physique du Mac et peut se comporter différemment. Testez sur un appareil réel pour un comportement correct.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi