Autocapitalization: co to jest, typy i UITextAutocapitalizationType

Autor: IT Sectr Opublikowano: 2026-07-08 Czas czytania: 7 min

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 — automatyczne przekształcanie pierwszej litery na wielką w polach wprowadzania UIKit
  • UITextAutocapitalizationType obejmuje cztery tryby: none, words, sentences i allCharacters
  • Tryb sentences — najczęściej używany, zamienia na wielką pierwszą literę każdego zdania
  • Tryb words — zamienia na wielką pierwszą literę każdego słowa, wygodny dla pól imienia i nazwiska
  • Tryb none — obowiązkowy dla pól haseł, email, zapytań wyszukiwania i kodów potwierdzających

Co to jest Autocapitalization?

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.

Tryby autokapitalizacji

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.

None — bez autokapitalizacji

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.

Words — każde słowo z wielkiej litery

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ą.

Sentences — początek zdania

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.

All Characters — wszystkie wielkie

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.

TrybOpisPrzykład wprowadzeniaZalecenie
.noneBez zmianjohn@mail.comEmail, hasła, wyszukiwanie
.wordsKażde słowoJan KowalskiImię, adres, miasto
.sentencesPoczątek zdaniaDzień dobry. Jak się masz?Wiadomości, notatki
.allCharactersWszystkie wielkieABC-123Kody, indeksy

Jak działa automatyczna wielka litera

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.

Kiedy wyłączać autokapitalizację

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.

Przykłady konfiguracji w Swift

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.

swift
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.

swift
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.

swift
func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField === codeField {
        textField.autocapitalizationType = .allCharacters
    }
}

Lokalizacja i autokapitalizacja

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

Czy można dynamicznie zmienić tryb autokapitalizacji?

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.

Czy secureTextEntry wyłącza autokapitalizację?

Tak, dla pól z isSecureTextEntry = true system automatycznie ustawia autocapitalizationType = .none. Zmiana tego zachowania programowo nie jest możliwa.

Czy autokapitalizacja działa dla UITextView?

Tak, UITextView w pełni obsługuje autocapitalizationType. Jest to szczególnie przydatne w polach wielowierszowych, gdzie tryb .sentences działa najbardziej naturalnie.

Jak autokapitalizacja wpływa na hasło?

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.

Czy jest różnica między symulatorem a urządzeniem?

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

  • Autocapitalization — funkcja automatycznego przekształcania pierwszego znaku na wielki w polach wprowadzania iOS
  • Cztery tryby UITextAutocapitalizationType: none, words, sentences, allCharacters
  • Tryb .sentences odpowiedni dla większości pól, aktywuje się po kropce, !, ? i nowej linii
  • Tryb .none obowiązkowy dla email, haseł, wyszukiwania i pól wrażliwych na wielkość liter
  • Tryb .words optymalny dla pól imienia, nazwiska, miasta i adresu
  • Lokalizacja — dla języka tureckiego uwzględniana jest specjalna reguła litery İ/ı
  • Zalecenie — konfiguruj autokapitalizację dla każdego pola zgodnie z jego semantyką

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.

Omów projekt

Przeczytaj również