Autocapitalization — to mechanizm iOS, który automatycznie przekształca pierwszą literę wprowadzonego tekstu na wielką w określonych kontekstach. UIKit udostępnia właściwość autocapitalizationType w protokole UITextInputTraits z czterema trybami: none, words, sentences i allCharacters. Według Apple Text Programming Guide (2025), prawidłowe skonfigurowanie autokapitalizacji poprawia doświadczenie użytkownika i zmniejsza liczbę ręcznych poprawek podczas wprowadzania tekstu. Używaj trybu sentences dla większości pól tekstowych i none dla nazw użytkowników i haseł.
Najważniejsze
Autocapitalization (autokapitalizacja) — to funkcja systemu operacyjnego iOS, która automatycznie przekształca pierwszy znak tekstu na wielką literę po wystąpieniu określonych warunków. Mechanizm jest sterowany przez właściwość autocapitalizationType, dostępną dla wszystkich elementów implementujących protokół UITextInputTraits: UITextField, UITextView i UISearchBar.
Funkcja działa na poziomie silnika tekstowego iOS i aktywuje się w momencie wprowadzania każdego znaku. System analizuje pozycję kursora i otaczający tekst, aby określić, czy bieżący wprowadzany znak ma być przekształcony na wielki. Jeśli warunek jest spełniony, iOS automatycznie zastępuje małą literę wielką, zanim zostanie wyświetlona w polu.
Według Apple Human Interface Guidelines (2025), autokapitalizacja jest częścią szerszego systemu predykcyjnego wprowadzania tekstu, który obejmuje również autokorektę i predykcyjne wprowadzanie tekstu. Użytkownik może wyłączyć wszystkie te funkcje globalnie w ustawieniach systemu (Ustawienia > Ogólne > Klawiatura), ale programista również zarządza nimi na poziomie konkretnych pól.
W przeciwieństwie do autokorekty, autokapitalizacja nie używa modelu językowego — działa według prostych zasad: po kropce i spacji, na początku tekstu, po znaku nowej linii. Wyjątkiem jest tryb words, gdzie wielką literą staje się pierwsza litera każdego słowa, niezależnie od kontekstu.
UITextAutocapitalizationType — to wyliczenie czterech wartości określających strategię automatycznego przekształcania wielkości liter. Każdy tryb jest przeznaczony dla określonego typu pól tekstowych i rozwiązuje konkretne zadanie związane z doświadczeniem użytkownika.
Tryb .none całkowicie wyłącza automatyczne przekształcanie wielkości liter. Wszystkie znaki są wprowadzane w takiej wielkości, w jakiej wpisuje je użytkownik. Ten tryb jest obowiązkowy dla pól haseł, adresów email, nicków, zapytań wyszukiwania i wszelkich pól, gdzie wielkość liter ma znaczenie dla przetwarzania danych na serwerze.
Tryb .words zamienia na wielką pierwszą literę każdego wprowadzanego słowa. System określa granicę słowa po spacji i przekształca pierwszy znak po spacji na wielki. Tryb jest wygodny dla pól wprowadzania imienia, nazwiska, nazw miast, ulic i innych pól, gdzie każde słowo powinno zaczynać się wielką literą.
Tryb .sentences — najczęściej używany i domyślnie stosowany dla większości pól tekstowych. System zamienia na wielką pierwszą literę po kropce, wykrzykniku lub znaku zapytania, po którym następuje spacja. Tryb idealnie nadaje się do pól wprowadzania notatek, wiadomości, komentarzy i innych tekstów wielowierszowych.
Tryb .allCharacters przekształca wszystkie wprowadzane znaki na wielkie. Ten tryb jest odpowiednikiem ciągłego wciśnięcia Caps Lock i jest używany w polach, gdzie dane muszą być pisane wielkimi literami: kody pocztowe, kody krajów, skróty, numery zamówień. Należy go stosować ostrożnie, ponieważ tekst pisany wielkimi literami jest trudniejszy do czytania.
| Tryb | Opis | Przykład wprowadzenia | Zalecenie |
|---|---|---|---|
| .none | Bez zmian | john@mail.com | Email, hasła, wyszukiwanie |
| .words | Każde słowo | Jan Kowalski | Imię, adres, miasto |
| .sentences | Początek zdania | Dzień dobry. Jak się masz? | Wiadomości, notatki |
| .allCharacters | Wszystkie wielkie | ABC-123 | Kody, indeksy |
Mechanizm autokapitalizacji aktywuje się na etapie przetwarzania naciśnięcia klawisza, przed wyświetleniem znaku na ekranie. Gdy użytkownik naciska klawisz, UITextInputTraits sprawdza bieżącą pozycję kursora i stosuje regułę przekształcania wielkości liter zgodnie z ustawionym autocapitalizationType.
Dla trybu .sentences system śledzi znaki wyzwalające: kropkę (.), wykrzyknik (!), znak zapytania (?), a także znak nowej linii ( ) przy włączonym trybie. Po wykryciu znaku wyzwalającego i następującej po nim spacji system ustawia flagę „oczekiwanie wielkiej litery" dla następnego wprowadzanego znaku.
Tryb .words śledzi znak spacji jako wyzwalacz. Po każdej spacji system oczekuje wielkiej litery dla następnego słowa. Istnieją jednak wyjątki: po myślniku, apostrofie i innych znakach interpunkcyjnych wewnątrz słowa wielka litera nie jest wstawiana. Na przykład „O'Brien" pozostanie poprawny.
Ważna cecha — autokapitalizacja działa tylko dla pierwszego znaku słowa. Jeśli użytkownik wprowadza słowo zawierające wielkie litery w środku (na przykład iPhone lub macOS), system ich nie zmienia, ponieważ przekształcenie jest stosowane tylko do pierwszego znaku po wyzwalaczu. Oznacza to, że nazwy marek i produktów z niestandardową wielkością liter nie zostaną uszkodzone.
Autokapitalizację należy wyłączać w polach, gdzie wielkość liter ma znaczenie dla prawidłowego przetwarzania danych. Główne przypadki: pola wprowadzania adresów email, nicków i nazw użytkowników, haseł, zapytań wyszukiwania, adresów URL, kodów potwierdzających, IMEI i numerów seryjnych. We wszystkich tych przypadkach automatyczna zmiana wielkości liter doprowadzi do błędów podczas przetwarzania na serwerze.
Dla pól wyszukiwania (UISearchBar) autokapitalizacja jest domyślnie wyłączona, co odpowiada oczekiwaniom użytkowników. Zapytanie wyszukiwania może być wprowadzone w dowolnej wielkości liter, a serwer zwykle samodzielnie zamienia je na małe litery. Jeśli włączysz autokapitalizację dla wyszukiwania, użytkownik będzie za każdym razem ręcznie poprawiać wielką literę na początku zapytania.
W formularzach rejestracji pole username lub nickname powinno mieć tryb .none, ponieważ wiele systemów rozróżnia wielkość liter w nazwach użytkowników. Pole email również powinno być bez autokapitalizacji — chociaż nazwy domen nie są wrażliwe na wielkość liter, lokalna część email teoretycznie może rozróżniać wielkość liter, choć w praktyce zdarza się to rzadko.
Według Apple Developer Documentation, pola z secureTextEntry (hasła) automatycznie dziedziczą autocapitalizationType = .none, nawet jeśli programista jawnie ustawił inną wartość. System ma najwyższy priorytet dla chronionego wprowadzania i ignoruje wszelkie próby włączenia autokapitalizacji dla pola hasła.
Konfiguracja autokapitalizacji w Swift odbywa się przez właściwość autocapitalizationType. Właściwość jest dostępna dla UITextField, UITextView i UISearchBar. Wartość można ustawić zarówno w kodzie, jak i przez Interface Builder w inspektorze atrybutów, gdzie tryb nazywa się Capitalization.
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
Dla formularza kontaktowego skonfiguruj każde pole zgodnie z jego semantyką: imię — .words, email — .none, wiadomość — .sentences. Taka kombinacja zapewnia najlepsze doświadczenie użytkownika i minimalizuje potrzebę ręcznej korekty wielkości liter.
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
}
}
Dla programowej zmiany trybu w czasie wykonania użyj delegata UITextFieldDelegate. Na przykład, jeśli pole może być używane w różnych kontekstach, zmieniaj autocapitalizationType w metodzie textFieldDidBeginEditing w zależności od bieżącego trybu pracy formularza.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
Autokapitalizacja zależy od języka wprowadzania ustawionego na klawiaturze użytkownika. Dla różnych języków zasady przekształcania wielkości liter mogą się różnić. Na przykład w języku tureckim litera „i" w wielkiej literze zamienia się w „İ" (z kropką), a „I" w małej literze — w „ı" (bez kropki). iOS uwzględnia te cechy automatycznie.
Dla języka rosyjskiego autokapitalizacja działa według tych samych zasad co dla angielskiego: wielka litera po kropce, na początku zdania i po nowej linii. Problemy mogą wystąpić z literą „jo" — chociaż występuje ona w słowniku systemowym, nie wszystkie układ klawiatury wyświetlają ją na głównej warstwie, a autokapitalizacja prawidłowo przekształca „jo" w „Jo".
Dla języka chińskiego, japońskiego i koreańskiego autokapitalizacja nie jest stosowana, ponieważ w tych językach nie ma pojęcia wielkości liter. Tryb autocapitalizationType jest ignorowany przez system podczas korzystania z odpowiednich klawiatur, a pole zachowuje się tak samo jak w trybie .none, niezależnie od ustawionej wartości.
Dla języka arabskiego i hebrajskiego autokapitalizacja również nie jest stosowana, ponieważ te języki używają własnego systemu pisma bez podziału na małe i wielkie litery. System iOS prawidłowo określa język wprowadzania i ignoruje ustawienia autokapitalizacji dla języków, w których to pojęcie nie występuje.
Często zadawane pytania
Tak, właściwość autocapitalizationType można zmieniać w dowolnym momencie, nawet gdy pole jest już aktywne. Zmiana zacznie obowiązywać przy następnym wprowadzeniu znaku.
Tak, dla pól z isSecureTextEntry = true system automatycznie ustawia autocapitalizationType = .none. Zmiana tego zachowania programowo nie jest możliwa.
Tak, UITextView w pełni obsługuje autocapitalizationType. Jest to szczególnie przydatne w polach wielowierszowych, gdzie tryb .sentences działa najbardziej naturalnie.
Jeśli pole nie jest oznaczone jako secureTextEntry, ale jest używane do wprowadzania hasła, autokapitalizacja może zmienić hasło. Zawsze wyłączaj ją w polach, gdzie wielkość liter ma znaczenie.
Na symulatorze autokapitalizacja działa przez fizyczną klawiaturę Mac i może zachowywać się inaczej. Testuj na rzeczywistym urządzeniu dla prawidłowego działania.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również