Autocapitalizzazione è un meccanismo iOS che converte automaticamente la prima lettera del testo inserito in maiuscola in determinati contesti. UIKit fornisce la proprietà autocapitalizationType nel protocollo UITextInputTraits con quattro modalità: none, words, sentences e allCharacters. Secondo Apple Text Programming Guide (2025), una corretta configurazione dell'autocapitalizzazione migliora l'esperienza utente e riduce il numero di correzioni manuali durante l'inserimento. Utilizzare la modalità sentences per la maggior parte dei campi di testo e none per nomi utente e password.
Punti chiave
L'autocapitalizzazione è una funzionalità del sistema operativo iOS che converte automaticamente il primo carattere del testo in maiuscolo quando vengono soddisfatte determinate condizioni. Il meccanismo è controllato tramite la proprietà autocapitalizationType, disponibile per tutti gli elementi che implementano il protocollo UITextInputTraits: UITextField, UITextView e UISearchBar.
La funzionalità opera a livello del motore di testo iOS e si attiva al momento dell'inserimento di ogni carattere. Il sistema analizza la posizione del cursore e il testo circostante per determinare se capitalizzare il carattere corrente. Se la condizione viene soddisfatta, iOS sostituisce automaticamente la lettera minuscola con una maiuscola prima che venga visualizzata nel campo.
Secondo le Apple Human Interface Guidelines (2025), l'autocapitalizzazione fa parte di un più ampio sistema di input predittivo che include anche la correzione automatica e l'input di testo predittivo. L'utente può disabilitare tutte queste funzionalità globalmente nelle impostazioni di sistema (Impostazioni > Generali > Tastiera), ma lo sviluppatore le controlla anche a livello di campi specifici.
A differenza della correzione automatica, l'autocapitalizzazione non utilizza un modello linguistico — funziona con regole semplici: dopo un punto e spazio, all'inizio del testo, dopo un carattere di nuova riga. L'eccezione è la modalità words, dove la prima lettera di ogni parola viene capitalizzata indipendentemente dal contesto.
UITextAutocapitalizationType è un'enumerazione di quattro valori che definiscono la strategia di conversione automatica di maiuscole/minuscole. Ogni modalità è progettata per un tipo specifico di campo di testo e risolve un particolare compito di esperienza utente.
La modalità .none disabilita completamente la conversione automatica di maiuscole/minuscole. Tutti i caratteri vengono inseriti nella forma in cui l'utente li digita. Questa modalità è obbligatoria per campi password, indirizzi email, soprannomi, ricerche e qualsiasi campo in cui le maiuscole/minuscole siano importanti per l'elaborazione dei dati lato server.
La modalità .words capitalizza la prima lettera di ogni parola inserita. Il sistema determina i confini delle parole tramite spazi e converte il primo carattere dopo uno spazio in maiuscolo. Questa modalità è comoda per campi di nome, cognome, nomi di città, strade e altri campi in cui ogni parola dovrebbe iniziare con una lettera maiuscola.
La modalità .sentences è la più comune e viene utilizzata per impostazione predefinita per la maggior parte dei campi di testo. Il sistema capitalizza la prima lettera dopo un punto, punto esclamativo o punto interrogativo seguito da uno spazio. Questa modalità è ideale per note, messaggi, commenti e altri campi di testo su più righe.
La modalità .allCharacters converte tutti i caratteri inseriti in maiuscolo. Questa modalità equivale a tenere premuto il Bloc Maiusc costantemente e viene utilizzata per campi in cui i dati devono essere in maiuscolo: codici postali, codici paese, abbreviazioni, numeri d'ordine. Da usare con cautela, poiché il testo in maiuscolo è più difficile da leggere.
| Modalità | Descrizione | Esempio di input | Raccomandazione |
|---|---|---|---|
| .none | Nessuna modifica | mario@mail.com | Email, password, ricerca |
| .words | Ogni parola | Mario Rossi | Nome, indirizzo, città |
| .sentences | Inizio frase | Ciao. Come stai? | Messaggi, note |
| .allCharacters | Tutto maiuscolo | ABC-123 | Codici, indici |
Il meccanismo di autocapitalizzazione si attiva durante l'elaborazione della pressione di un tasto, prima che il carattere venga visualizzato sullo schermo. Quando l'utente preme un tasto, UITextInputTraits controlla la posizione corrente del cursore e applica la regola di conversione di maiuscole/minuscole secondo l'autocapitalizationType impostato.
Per la modalità .sentences, il sistema traccia i caratteri trigger: punto (.), punto esclamativo (!), punto interrogativo (?) e il carattere di nuova riga ( ) quando abilitato. Dopo aver rilevato un carattere trigger e lo spazio successivo, il sistema imposta un flag di “lettera maiuscola attesa” per il prossimo carattere inserito.
La modalità .words traccia il carattere spazio come trigger. Dopo ogni spazio, il sistema si aspetta una lettera maiuscola per la parola successiva. Tuttavia, ci sono eccezioni: dopo un trattino, apostrofo e altri segni di punteggiatura all'interno di una parola, non viene inserita una maiuscola. Ad esempio, “O’Brien” rimane corretto.
Una caratteristica importante è che l'autocapitalizzazione funziona solo sul primo carattere di una parola. Se l'utente inserisce una parola contenente maiuscole al centro (ad esempio iPhone o macOS), il sistema non le modifica, poiché la conversione si applica solo al primo carattere dopo il trigger. Ciò significa che i nomi di marchi e prodotti con maiuscole/minuscole non standard non verranno alterati.
L'autocapitalizzazione dovrebbe essere disabilitata nei campi in cui le maiuscole/minuscole sono importanti per la corretta elaborazione dei dati. Casi comuni: campi di indirizzo email, soprannomi e nomi utente, password, ricerche, URL, codici di conferma, IMEI e numeri di serie. In tutti questi casi, le modifiche automatiche di maiuscole/minuscole causeranno errori durante l'elaborazione lato server.
Per i campi di ricerca (UISearchBar), l'autocapitalizzazione è disabilitata per impostazione predefinita, il che corrisponde alle aspettative degli utenti. Una query di ricerca può essere inserita in qualsiasi forma e il server di solito la converte in minuscolo autonomamente. Se l'autocapitalizzazione viene attivata per la ricerca, l'utente dovrà correggere manualmente la maiuscola all'inizio di ogni query.
Nei moduli di registrazione, il campo nome utente o soprannome dovrebbe avere la modalità .none, poiché molti sistemi distinguono tra maiuscole e minuscole nei nomi utente. Il campo email dovrebbe anche essere senza autocapitalizzazione — sebbene i nomi di dominio non siano sensibili alle maiuscole/minuscole, la parte locale dell'email teoricamente potrebbe esserlo, anche se nella pratica è raro.
Secondo la Documentazione per Sviluppatori Apple, i campi con secureTextEntry (password) ereditano automaticamente autocapitalizationType = .none, anche se lo sviluppatore ha impostato esplicitamente un valore diverso. Il sistema ha la massima priorità per l'input sicuro e ignora qualsiasi tentativo di attivare l'autocapitalizzazione per un campo password.
La configurazione dell'autocapitalizzazione in Swift avviene tramite la proprietà autocapitalizationType. La proprietà è disponibile per UITextField, UITextView e UISearchBar. Il valore può essere impostato sia nel codice che tramite Interface Builder nell'inspector degli attributi, dove la modalità si chiama Capitalization.
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
Per un modulo di contatto, configura ogni campo secondo la sua semantica: nome — .words, email — .none, messaggio — .sentences. Questa combinazione offre la migliore esperienza utente e minimizza la necessità di correzione manuale di maiuscole/minuscole.
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
}
}
Per cambi di modalità programmatici in fase di esecuzione, utilizza il delegato UITextFieldDelegate. Ad esempio, se un campo può essere utilizzato in contesti diversi, modifica autocapitalizationType nel metodo textFieldDidBeginEditing in base alla modalità operativa corrente del modulo.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
L'autocapitalizzazione dipende dalla lingua di input impostata sulla tastiera dell'utente. Lingue diverse possono avere regole diverse di conversione di maiuscole/minuscole. Ad esempio, in turco, la lettera “i” in maiuscolo diventa “İ” (con punto), mentre “I” in minuscolo diventa “ı” (senza punto). iOS gestisce queste caratteristiche automaticamente.
Per il russo, l'autocapitalizzazione segue le stesse regole dell'inglese: lettera maiuscola dopo un punto, all'inizio di una frase e dopo una nuova riga. Possono sorgere problemi con la lettera “yo” — sebbene sia presente nel dizionario di sistema, non tutti i layout di tastiera la mostrano sul livello principale, e l'autocapitalizzazione converte correttamente “yo” in “Yo”.
Per cinese, giapponese e coreano, l'autocapitalizzazione non si applica, poiché queste lingue non hanno il concetto di maiuscole/minuscole. La modalità autocapitalizationType viene ignorata dal sistema quando si utilizzano le tastiere corrispondenti e il campo si comporta come in modalità .none, indipendentemente dal valore impostato.
Per l'arabo e l'ebraico, l'autocapitalizzazione non si applica, poiché queste lingue utilizzano il proprio sistema di scrittura senza distinzione tra maiuscole e minuscole. Il sistema iOS rileva correttamente la lingua di input e ignora le impostazioni di autocapitalizzazione per le lingue in cui questo concetto non esiste.
Domande frequenti
Sì, la proprietà autocapitalizationType può essere modificata in qualsiasi momento, anche quando il campo è già attivo. La modifica avrà effetto al prossimo inserimento di carattere.
Sì, per i campi con isSecureTextEntry = true, il sistema imposta automaticamente autocapitalizationType = .none. Questo comportamento non può essere modificato programmaticamente.
Sì, UITextView supporta completamente autocapitalizationType. Ciò è particolarmente utile per campi multilinea dove la modalità .sentences funziona più naturalmente.
Se un campo non è contrassegnato come secureTextEntry ma viene utilizzato per l'inserimento di una password, l'autocapitalizzazione può modificare la password. Disabilitarla sempre per i campi in cui le maiuscole/minuscole sono importanti.
Sul simulatore, l'autocapitalizzazione funziona tramite la tastiera hardware del Mac e può comportarsi diversamente. Testare su un dispositivo reale per un comportamento corretto.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche