Autocapitalization este un mecanism iOS care transformă automat prima literă a textului introdus în majusculă în anumite contexte. UIKit oferă proprietatea autocapitalizationType în protocolul UITextInputTraits cu patru moduri: none, words, sentences și allCharacters. Conform Apple Text Programming Guide (2025), configurarea corectă a autocapitalizării îmbunătățește experiența utilizatorului și reduce numărul de corecții manuale la introducerea textului. Utilizați modul sentences pentru majoritatea câmpurilor de text și none pentru nume de utilizatori și parole.
Principalele idei
Autocapitalization (autocapitalizare) este o funcție a sistemului de operare iOS care transformă automat primul caracter al textului în literă majusculă atunci când sunt îndeplinite anumite condiții. Mecanismul este controlat prin proprietatea autocapitalizationType, disponibilă pentru toate elementele care implementează protocolul UITextInputTraits: UITextField, UITextView și UISearchBar.
Funcția funcționează la nivelul motorului de text iOS și se activează în momentul introducerii fiecărui caracter. Sistemul analizează poziția cursorului și textul din jur pentru a determina dacă trebuie să transforme caracterul curent introdus în majusculă. Dacă condiția este îndeplinită, iOS înlocuiește automat litera mică cu literă mare înainte ca aceasta să fie afișată în câmp.
Conform Apple Human Interface Guidelines (2025), autocapitalizarea face parte dintr-un sistem mai larg de introducere predictivă, care include și autocorectarea și completarea predictivă a textului. Utilizatorul poate dezactiva toate aceste funcții global în setările sistemului (Setări > General > Tastatură), dar dezvoltatorul le poate gestiona și la nivelul câmpurilor specifice.
Spre deosebire de autocorectare, autocapitalizarea nu utilizează un model lingvistic — funcționează după reguli simple: după punct și spațiu, la începutul textului, după un caracter de linie nouă. Excepția este modul words, unde prima literă a fiecărui cuvânt devine majusculă, indiferent de context.
UITextAutocapitalizationType este o enumerare cu patru valori care definesc strategia de transformare automată a majusculelor. Fiecare mod este destinat unui anumit tip de câmpuri de text și rezolvă o sarcină specifică a experienței utilizatorului.
Modul .none dezactivează complet transformarea automată a majusculelor. Toate caracterele sunt introduse în registrul în care utilizatorul le tastează. Acest mod este obligatoriu pentru câmpurile de parole, adrese de email, pseudonime, interogări de căutare și orice câmpuri unde registrul contează pentru procesarea datelor pe server.
Modul .words face majusculă prima literă a fiecărui cuvânt introdus. Sistemul determină limita cuvântului după spațiu și transformă primul caracter după spațiu în majusculă. Modul este util pentru câmpurile de introducere a numelui, prenumelui, denumirilor de orașe, străzi și alte câmpuri unde fiecare cuvânt trebuie să înceapă cu literă majusculă.
Modul .sentences — cel mai răspândit și utilizat implicit pentru majoritatea câmpurilor de text. Sistemul face majusculă prima literă după punct, semnul exclamării sau al întrebării, urmat de un spațiu. Modul este ideal pentru câmpurile de introducere a notițelor, mesajelor, comentariilor și altor texte multilinie.
Modul .allCharacters transformă toate caracterele introduse în majuscule. Acest mod este echivalent cu apăsarea constantă a tastei Caps Lock și este utilizat pentru câmpurile unde datele trebuie să fie în majuscule: coduri poștale, coduri de țară, abrevieri, numere de comandă. Trebuie aplicat cu prudență, deoarece textul în majuscule este mai greu de citit.
| Mod | Descriere | Exemplu intrare | Recomandare |
|---|---|---|---|
| .none | Fără modificări | john@mail.com | Email, parole, căutare |
| .words | Fiecare cuvânt | Ion Popescu | Nume, adresă, oraș |
| .sentences | Începutul propoziției | Salut. Ce faci? | Mesaje, notițe |
| .allCharacters | Toate majuscule | ABC-123 | Coduri, indici |
Mecanismul de autocapitalizare se activează în etapa de procesare a apăsării tastei, înainte de afișarea caracterului pe ecran. Când utilizatorul apasă o tastă, UITextInputTraits verifică poziția curentă a cursorului și aplică regula de transformare a majusculei în conformitate cu autocapitalizationType setat.
Pentru modul .sentences, sistemul urmărește caracterele declanșatoare: punctul (.), semnul exclamării (!), semnul întrebării (?), precum și caracterul de linie nouă ( ) când modul este activat. După detectarea caracterului declanșator și a spațiului următor, sistemul setează un fanion „așteptare literă majusculă" pentru următorul caracter introdus.
Modul .words urmărește caracterul spațiu ca declanșator. După fiecare spațiu, sistemul așteaptă o literă majusculă pentru următorul cuvânt. Cu toate acestea, există excepții: după cratimă, apostrof și alte semne de punctuație în interiorul cuvântului, litera majusculă nu este inserată. De exemplu, „O'Brien" va rămâne corect.
O caracteristică importantă — autocapitalizarea funcționează doar pentru primul caracter al cuvântului. Dacă utilizatorul introduce un cuvânt care conține litere majuscule la mijloc (de exemplu, iPhone sau macOS), sistemul nu le modifică, deoarece transformarea se aplică doar primului caracter după declanșator. Aceasta înseamnă că numele de mărci și produse cu registru non-standard nu vor fi deteriorate.
Autocapitalizarea trebuie dezactivată în câmpurile unde registrul caracterelor contează pentru procesarea corectă a datelor. Cazurile principale: câmpuri de introducere a adreselor de email, pseudonimelor și numelor de utilizatori, parolelor, interogărilor de căutare, adreselor URL, codurilor de confirmare, IMEI și numerelor de serie. În toate aceste cazuri, modificarea automată a registrului va duce la erori la procesarea pe server.
Pentru barele de căutare (UISearchBar), autocapitalizarea este dezactivată implicit, ceea ce corespunde așteptărilor utilizatorilor. O interogare de căutare poate fi introdusă în orice registru, iar serverul o convertește de obicei la litere mici automat. Dacă activați autocapitalizarea pentru căutare, utilizatorul va trebui să corecteze manual litera majusculă de la începutul interogării de fiecare dată.
În formularele de înregistrare, câmpul username sau nickname trebuie să aibă modul .none, deoarece multe sisteme fac diferența între literele mari și mici în numele de utilizator. Câmpul email trebuie, de asemenea, să fie fără autocapitalizare — deși numele de domeniu nu sunt sensibile la registru, partea locală a emailului teoretic poate face diferența, deși în practică acest lucru este rar.
Conform Apple Developer Documentation, câmpurile cu secureTextEntry (parole) moștenesc automat autocapitalizationType = .none, chiar dacă dezvoltatorul a setat explicit o altă valoare. Sistemul are cea mai mare prioritate pentru introducerea securizată și ignoră orice încercare de a activa autocapitalizarea pentru un câmp de parolă.
Configurarea autocapitalizării în Swift se face prin proprietatea autocapitalizationType. Proprietatea este disponibilă pentru UITextField, UITextView și UISearchBar. Valoarea poate fi setată atât în cod, cât și prin Interface Builder în inspectorul de atribute, unde modul se numește Capitalization.
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
Pentru un formular de contact, configurați fiecare câmp în conformitate cu semantica sa: nume — .words, email — .none, mesaj — .sentences. Această combinație asigură cea mai bună experiență a utilizatorului și minimizează necesitatea corectării manuale a majusculelor.
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
}
}
Pentru modificarea programatică a modului în runtime, utilizați delegatul UITextFieldDelegate. De exemplu, dacă un câmp poate fi utilizat în contexte diferite, modificați autocapitalizationType în metoda textFieldDidBeginEditing în funcție de modul curent de funcționare a formularului.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
Autocapitalizarea depinde de limba de introducere setată pe tastatura utilizatorului. Pentru diferite limbi, regulile de transformare a majusculelor pot diferi. De exemplu, în limba turcă, litera „i" în majusculă devine „İ" (cu punct), iar „I" în minusculă devine „ı" (fără punct). iOS ține cont automat de aceste particularități.
Pentru limba română, autocapitalizarea funcționează după aceleași reguli ca pentru engleză: literă majusculă după punct, la începutul propoziției și după o linie nouă.
Pentru limbile chineză, japoneză și coreeană, autocapitalizarea nu se aplică, deoarece aceste limbi nu au conceptul de majuscule. Modul autocapitalizationType este ignorat de sistem când se utilizează tastaturile corespunzătoare, iar câmpul se comportă la fel ca în modul .none, indiferent de valoarea setată.
Pentru limba arabă și ebraică, autocapitalizarea nu se aplică, deoarece aceste limbi utilizează propriul sistem de scriere fără separarea în litere mari și mici. Sistemul iOS identifică corect limba de introducere și ignoră setările de autocapitalizare pentru limbile unde acest concept nu există.
Întrebări frecvente
Da, proprietatea autocapitalizationType poate fi modificată în orice moment, chiar și când câmpul este deja activ. Modificarea va intra în vigoare la următoarea introducere a unui caracter.
Da, pentru câmpurile cu isSecureTextEntry = true, sistemul setează automat autocapitalizationType = .none. Modificarea acestui comportament programatic este imposibilă.
Da, UITextView suportă complet autocapitalizationType. Acest lucru este deosebit de util pentru câmpurile multilinie, unde modul .sentences funcționează cel mai natural.
Dacă câmpul nu este marcat ca secureTextEntry, dar este utilizat pentru introducerea parolei, autocapitalizarea poate modifica parola. Dezactivați-o întotdeauna pentru câmpurile unde registrul contează.
Pe simulator, autocapitalizarea funcționează prin tastatura hardware a Mac-ului și se poate comporta diferit. Testați pe un dispozitiv real pentru un comportament corect.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și