Autocorrection to wbudowany mechanizm iOS, który automatycznie poprawia błędy ortograficzne podczas wprowadzania tekstu. UIKit zarządza zachowaniem autokorekty przez właściwość autocorrectionType w protokole UITextInputTraits, obsługując trzy tryby: domyślny, włączony i wyłączony. Według Apple Text Programming Guide (2025) autokorekta analizuje wprowadzany tekst na podstawie słownika systemowego i uczenia maszynowego na urządzeniu. Używaj autocorrectionType dla każdego pola tekstowego osobno — pozwala to dostosować zachowanie do specyfiki wprowadzanych danych.
Najważniejsze
Autocorrection (autokorekta) to funkcja systemu iOS, która automatycznie zastępuje wprowadzone słowa potencjalnie poprawnymi wariantami po wykryciu błędu ortograficznego. Mechanizm działa na poziomie pól tekstowych UIKit i jest dostępny we wszystkich aplikacjach korzystających ze standardowych elementów UITextField i UITextView.
Podstawą autokorekty jest model językowy uczony na milionach przykładów tekstowych dla każdego obsługiwanego języka. Model działa w pełni na urządzeniu (on-device), co gwarantuje poufność wprowadzanych danych — tekst nie jest wysyłany na serwery Apple w celu analizy. Z każdą aktualizacją iOS model jest udoskonalany i rozszerzany o nowe słowa i reguły.
Autokorekta aktywuje się automatycznie dla wszystkich pól tekstowych, jeśli programista jej wyraźnie nie wyłączył. Użytkownik może całkowicie wyłączyć autokorektę w ustawieniach systemu (Ustawienia > Ogólne > Klawiatura > Autokorekta), ale programista może również zarządzać tym zachowaniem dla poszczególnych pól przez właściwość autocorrectionType.
Według WWDC 2023 Session 204, Apple zaprezentowała ulepszony model językowy autokorekty oparty na Transformer, który uwzględnia kontekst całego zdania, a nie tylko ostatniego słowa. Pozwoliło to zmniejszyć liczbę fałszywych poprawek o 30% w porównaniu z poprzednim modelem opartym na n-gramach.
UITextAutocorrectionType to wyliczenie z trzema wartościami określającymi zachowanie autokorekty dla konkretnego pola tekstowego. Każda wartość jest ustawiana przez właściwość autocorrectionType, dostępną w Interface Builder i w kodzie podczas tworzenia pola.
Wartość .default oznacza, że pole dziedziczy globalne ustawienie autokorekty z systemowych parametrów klawiatury. Ten tryb jest zalecany dla większości pól tekstowych, ponieważ respektuje wybór użytkownika. Jeśli użytkownik wyłączył autokorektę w ustawieniach, pole z .default również jej nie użyje.
Wartość .yes wymusza włączenie autokorekty dla pola niezależnie od ustawienia systemowego. Tego trybu należy używać tylko dla pól, w których dokładność ortograficzna jest krytyczna — na przykład w edytorach tekstu, polach notatek lub wiadomości. Apple zaleca ostrożne stosowanie .yes, ponieważ wymuszone włączenie może być sprzeczne z oczekiwaniami użytkownika.
Wartość .no wyłącza autokorektę dla konkretnego pola. Ten tryb jest obowiązkowy dla pól haseł (secure text entry), adresów email, kodów potwierdzających i zapytań wyszukiwania. W tych polach autokorekta jest nie tylko bezużyteczna, ale także szkodliwa — może zastąpić poprawnie wprowadzone dane błędnymi.
| Tryb | Wartość | Zalecenie |
|---|---|---|
| .default | Dziedziczy ustawienie systemowe | Większość pól wprowadzania |
| .yes | Wymuszone włączenie | Edytory tekstu, notatki |
| .no | Wymuszone wyłączenie | Hasła, email, szukaj, kody |
Model językowy autokorekty iOS używa kombinacji słownika statycznego i dynamicznie uczonego modelu. Słownik systemowy zawiera najczęściej używane słowa dla każdego języka, a model językowy oparty na Transformer analizuje kontekst i prawdopodobieństwo zamiany. Model uczy się na urządzeniu na podstawie tekstów wprowadzanych przez użytkownika.
Użytkownik może dodawać słowa do słownika osobistego przez ustawienia klawiatury (Ustawienia > Ogólne > Klawiatura > Zamiana tekstu). Dodane słowa są zapisywane w iCloud i synchronizowane między urządzeniami przez to samo Apple ID. System nie będzie poprawiał słów ze słownika osobistego, co jest wygodne dla nazw, marek i terminów technicznych.
Dla specyficznych dziedzin — medycznych, prawnych, technicznych — standardowy słownik może zawierać niewystarczającą liczbę terminów. W takich aplikacjach zaleca się wyłączenie autokorekty dla odpowiednich pól lub użycie zastępowania tekstu przez metodę UIResponder .replacementDictionary dla iOS 17+.
Według Apple Machine Learning Research (2024), nowy model autokorekty oparty na architekturze Transformer przetwarza do 10 tokenów kontekstu (w porównaniu do 3 tokenów w poprzednim modelu), co pozwala dokładniej określać intencję użytkownika. Model uwzględnia nie tylko ortografię, ale także strukturę gramatyczną zdania.
Safe Keyboard to bezpieczny tryb wprowadzania, który automatycznie aktywuje się dla pól z secureTextEntry = true. W tym trybie autokorekta, automatyczna kapitalizacja i predykcyjne wprowadzanie są wyłączane przez system niezależnie od ustawionych wartości autocorrectionType. System blokuje również dostęp do słownika osobistego i zamiany tekstu.
Safe Keyboard zapobiega wyciekowi wprowadzanych danych przez mechanizmy autokorekty. Gdyby autokorekta była aktywna dla pola hasła, system mógłby zapisać wprowadzone hasło w słowniku osobistym lub przesłać je na serwery Apple w celu uczenia modelu. Safe Keyboard gwarantuje, że poufne dane nie opuszczają granic aplikacji.
Dla aplikacji finansowych Safe Keyboard aktywuje się automatycznie tylko dla pól z secureTextEntry. Dla pól wprowadzania numerów kart, dat ważności i kodów CVV programista powinien dodatkowo ręcznie wyłączyć autokorektę, ustawiając autocorrectionType = .no oraz keyboardType = .numberPad lub .phonePad.
Począwszy od iOS 17, Safe Keyboard obsługuje ochronę przed przechwyceniem przez klawiatury innych firm. Jeśli użytkownik zainstalował klawiaturę z App Store, przy aktywacji secureTextEntry klawiatura systemowa automatycznie zastępuje klawiaturę innej firmy, nawet jeśli była wybrana domyślnie. Gwarantuje to, że hasła są wprowadzane tylko przez bezpieczną klawiaturę systemową.
Zarządzanie autokorektą w Swift odbywa się przez właściwość autocorrectionType obiektów UITextField i UITextView. Właściwość jest dostępna zarówno do odczytu, jak i zapisu i może być zmieniana dynamicznie w zależności od kontekstu wprowadzania. Konfiguracja przez Interface Builder jest dostępna w inspektorze atrybutów pod nazwą Correction.
let textField = UITextField()
textField.autocorrectionType = .no
Dla formularza logowania autokorektę należy wyłączyć dla pola hasła i włączyć domyślnie dla pola loginu. Pole email również zaleca się pozostawić bez autokorekty, ponieważ znak @ i nazwy domen są często nieprawidłowo zastępowane. Dla pola username autokorekta może być włączona, jeśli username jest czytelnym słowem.
class RegistrationViewController: UIViewController {
@IBOutlet var nameField: UITextField!
@IBOutlet var emailField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
nameField.autocorrectionType = .yes
emailField.autocorrectionType = .no
emailField.textContentType = .emailAddress
}
}
Dla UITextView konfiguracja autokorekty jest analogiczna. Jest to szczególnie ważne dla wieloliniowych pól komentarzy, wiadomości i notatek, gdzie autokorekta przynosi największe korzyści, ale może również powodować niedogodności przy wprowadzaniu terminów technicznych lub kodu.
let textView = UITextView()
textView.autocorrectionType = .default
Dla dynamicznej zmiany autokorekty użyj delegata UITextFieldDelegate. Metoda textFieldDidBeginEditing jest wywoływana przy aktywacji pola i w niej można zmienić autocorrectionType w zależności od bieżącego kontekstu lub roli pola, która może się zmieniać podczas działania aplikacji.
Autokorektę należy wyłączać w polach, gdzie dokładność wprowadzanych danych jest krytyczna, a system nie może poprawnie określić intencji użytkownika. Główne przypadki: pola haseł i danych poufnych, pola adresów email, paski wyszukiwania, pola wprowadzania kodu i kodu programistycznego, a także pola z niestandardowymi formatami danych.
Dla pasków wyszukiwania (UISearchBar) autokorekta jest domyślnie wyłączona, co odpowiada oczekiwaniom użytkowników. Podczas wyszukiwania użytkownik może wprowadzać niepełne słowa, terminy techniczne lub zapytania w różnych językach, a autokorekta będzie tylko przeszkadzać. Podobnie dla pól wprowadzania URL i nazw domen.
W komunikatorach i aplikacjach do rozmów autokorekta jest zazwyczaj włączona, ale przy wprowadzaniu slangu, skrótów i nieformalnego słownictwa może powodować niedogodności. W takich przypadkach użytkownik może wyłączyć autokorektę przez ustawienia klawiatury, a programista może udostępnić przełącznik bezpośrednio w interfejsie aplikacji.
Według Apple Human Interface Guidelines autokorekta powinna być wyłączona dla każdego pola, w którym wprowadzane dane mogą nie znajdować się w słowniku systemowym: numery zamówień, kody rezerwacji, identyfikatory, IMEI, adresy MAC. Jeśli pole przyjmuje dane alfanumeryczne w niestandardowym formacie — wyłączaj autokorektę.
Często zadawane pytania
Globalne wyłączenie autokorekty dla aplikacji nie istnieje. Należy ustawić autocorrectionType = .no dla każdego pola tekstowego osobno lub utworzyć podklasę UITextField z nadpisaną wartością.
Symulator używa uproszczonego modelu wprowadzania z klawiatury Mac. Model językowy autokorekty w symulatorze nie jest aktywny — do testowania używaj rzeczywistego urządzenia.
Użytkownik może dodać słowo przez Ustawienia > Ogólne > Klawiatura > Zamiana tekstu. Dla aplikacji nie ma API do programowego dodawania słów do systemowego słownika autokorekty.
Nie, keyboardType nie wpływa na autokorektę. Nawet dla klawiatury .numberPad autokorekta może być aktywna, jeśli nie została wyraźnie wyłączona przez autocorrectionType.
Klawiatury innych firm mają własne mechanizmy autokorekty i nie używają systemowego UITextAutocorrectionType. Zachowanie zależy od implementacji konkretnej klawiatury.
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ż