Autocorrection je vestavěný mechanismus iOS, který automaticky opravuje pravopisné chyby při zadávání textu. UIKit spravuje chování automatické opravy pomocí vlastnosti autocorrectionType v protokolu UITextInputTraits a podporuje tři režimy: výchozí, zapnutý a vypnutý. Podle Apple Text Programming Guide (2025) automatická oprava analyzuje zadávaný text na základě systémového slovníku a strojového učení na zařízení. Používejte autocorrectionType pro každé textové pole zvlášť — umožňuje to přizpůsobit chování specifikům zadávaných dat.
Hlavní body
Autocorrection (automatická oprava) je funkce operačního systému iOS, která automaticky nahrazuje zadaná slova pravděpodobně správnými variantami při detekci pravopisné chyby. Mechanismus pracuje na úrovni textových polí UIKit a je dostupný ve všech aplikacích používajících standardní vstupní prvky UITextField a UITextView.
Základem automatické opravy je jazykový model trénovaný na milionech textových příkladů pro každý podporovaný jazyk. Model pracuje zcela na zařízení (on-device), což zaručuje důvěrnost zadávaných dat — text není odesílán na servery Apple k analýze. S každou aktualizací iOS je model zpřesňován a rozšiřován o nová slova a pravidla.
Automatická oprava se aktivuje automaticky pro všechna textová pole, pokud ji vývojář výslovně nevypnul. Uživatel může automatickou opravu zcela vypnout v systémových nastaveních (Nastavení > Obecné > Klávesnice > Automatická oprava), ale vývojář může toto chování spravovat pro jednotlivá pole pomocí vlastnosti autocorrectionType.
Podle WWDC 2023 Session 204 představila Apple vylepšený jazykový model automatické opravy založený na Transformer, který zohledňuje kontext celé věty, nejen posledního slova. To umožnilo snížit počet falešných oprav o 30 % ve srovnání s předchozím modelem založeným na n-gramech.
UITextAutocorrectionType je výčet se třemi hodnotami určujícími chování automatické opravy pro konkrétní textové pole. Každá hodnota se nastavuje pomocí vlastnosti autocorrectionType, dostupné v Interface Builder a v kódu při vytváření pole.
Hodnota .default znamená, že pole dědí globální nastavení automatické opravy z parametrů systémové klávesnice. Tento režim je doporučen pro většinu textových polí, protože respektuje volbu uživatele. Pokud uživatel vypnul automatickou opravu v nastavení, pole s .default ji také nebude používat.
Hodnota .yes vynucuje zapnutí automatické opravy pro pole bez ohledu na systémové nastavení. Tento režim by měl být použit pouze pro pole, kde je pravopisná přesnost kritická — například v textových editorech, polích poznámek nebo zpráv. Apple doporučuje používat .yes s opatrností, protože vynucené zapnutí může být v rozporu s očekáváním uživatele.
Hodnota .no vypíná automatickou opravu pro konkrétní pole. Tento režim je povinný pro pole hesel (secure text entry), e-mailové adresy, potvrzovací kódy a vyhledávací dotazy. V těchto polích je automatická oprava nejen zbytečná, ale i škodlivá — může nahradit správně zadaná data chybnými.
| Režim | Hodnota | Doporučení |
|---|---|---|
| .default | Dědí systémové nastavení | Většina vstupních polí |
| .yes | Vynuceně zapnuto | Textové editory, poznámky |
| .no | Vynuceně vypnuto | Hesla, e-mail, hledání, kódy |
Jazykový model automatické opravy iOS používá kombinaci statického slovníku a dynamicky učícího se modelu. Systémový slovník obsahuje nejčastěji používaná slova pro každý jazyk a jazykový model založený na Transformeru analyzuje kontext a pravděpodobnost nahrazení. Model se učí na zařízení na základě textů zadaných uživatelem.
Uživatel může přidávat slova do osobního slovníku pomocí nastavení klávesnice (Nastavení > Obecné > Klávesnice > Nahrazování textu). Přidaná slova se ukládají na iCloud a synchronizují se mezi zařízeními přes stejné Apple ID. Systém nebude opravovat slova z osobního slovníku, což je vhodné pro jména, značky a technické termíny.
Pro specifické domény — lékařské, právní, technické — může standardní slovník obsahovat nedostatečné množství termínů. V takových aplikacích se doporučuje buď vypnout automatickou opravu pro příslušná pole, nebo použít vlastní nahrazování textu pomocí metody UIResponder .replacementDictionary pro iOS 17+.
Podle Apple Machine Learning Research (2024) nový model automatické opravy založený na architektuře Transformer zpracovává až 10 tokenů kontextu (oproti 3 tokenům v předchozím modelu), což umožňuje přesnější určení záměru uživatele. Model zohledňuje nejen pravopis, ale i gramatickou strukturu věty.
Safe Keyboard je zabezpečený režim zadávání, který se automaticky aktivuje pro pole s secureTextEntry = true. V tomto režimu je automatická oprava, automatická kapitalizace a prediktivní zadávání vypnuto systémem bez ohledu na nastavené hodnoty autocorrectionType. Systém také blokuje přístup k osobnímu slovníku a nahrazování textu.
Safe Keyboard zabraňuje úniku zadávaných dat prostřednictvím mechanismů automatické opravy. Pokud by byla automatická oprava aktivní pro pole hesla, systém by mohl uložit zadané heslo do osobního slovníku nebo jej odeslat na servery Apple pro trénování modelu. Safe Keyboard zaručuje, že důvěrná data neopustí hranice aplikace.
Pro finanční aplikace se Safe Keyboard aktivuje automaticky pouze pro pole s secureTextEntry. Pro pole čísel karet, dat expirace a CVV kódů musí vývojář ručně vypnout automatickou opravu nastavením autocorrectionType = .no a keyboardType = .numberPad nebo .phonePad.
Počínaje iOS 17 podporuje Safe Keyboard ochranu proti zachycení prostřednictvím klávesnic třetích stran. Pokud uživatel nainstaloval klávesnici z App Store, při aktivaci secureTextEntry systémová klávesnice automaticky nahradí klávesnici třetí strany, i když byla vybrána jako výchozí. To zaručuje, že hesla jsou zadávána pouze prostřednictvím bezpečné systémové klávesnice.
Správa automatické opravy ve Swiftu se provádí pomocí vlastnosti autocorrectionType objektů UITextField a UITextView. Vlastnost je dostupná pro čtení i zápis a může být dynamicky měněna v závislosti na kontextu zadávání. Konfigurace přes Interface Builder je dostupná v inspektoru atributů pod názvem Correction.
let textField = UITextField()
textField.autocorrectionType = .no
Pro přihlašovací formulář by měla být automatická oprava vypnuta pro pole hesla a ponechána výchozí pro pole přihlášení. Pole e-mailu se také doporučuje ponechat bez automatické opravy, protože symbol @ a názvy domén jsou často nesprávně nahrazovány. Pro pole uživatelského jména může být automatická oprava zapnuta, pokud je uživatelské jméno čitelné slovo.
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
}
}
Pro UITextView se konfigurace automatické opravy provádí obdobně. To je zvláště důležité pro víceřádková pole komentářů, zpráv a poznámek, kde automatická oprava přináší největší užitek, ale může také způsobovat nepříjemnosti při zadávání technických termínů nebo kódu.
let textView = UITextView()
textView.autocorrectionType = .default
Pro dynamickou změnu automatické opravy použijte delegáta UITextFieldDelegate. Metoda textFieldDidBeginEditing je volána při aktivaci pole a v ní lze změnit autocorrectionType v závislosti na aktuálním kontextu nebo roli pole, která se může během provozu aplikace měnit.
Automatickou opravu je třeba vypnout v polích, kde je přesnost zadávaných dat kritická a systém nemůže správně určit záměr uživatele. Hlavní případy: pole hesel a zabezpečených dat, pole e-mailových adres, vyhledávací řádky, pole pro zadávání kódu a programovacího kódu, stejně jako pole s nestandardními formáty dat.
Pro vyhledávací řádky (UISearchBar) je automatická oprava ve výchozím nastavení vypnuta, což odpovídá očekávání uživatelů. Při vyhledávání může uživatel zadávat neúplná slova, technické termíny nebo dotazy v různých jazycích a automatická oprava by pouze překážela. Podobně pro pole zadávání URL a názvů domén.
V messenger a komunikačních aplikacích je automatická oprava obvykle zapnuta, ale při zadávání slangu, zkratek a neformální slovní zásoby může způsobovat nepříjemnosti. V takových případech může uživatel vypnout automatickou opravu v nastavení klávesnice nebo může vývojář poskytnout přepínač přímo v rozhraní aplikace.
Podle Apple Human Interface Guidelines by měla být automatická oprava vypnuta pro každé pole, kde zadaná data nemusí být v systémovém slovníku: čísla objednávek, rezervační kódy, identifikátory, IMEI, MAC adresy. Pokud pole přijímá alfanumerická data v nestandardním formátu — vypněte automatickou opravu.
Často kladené otázky
Globální vypnutí automatické opravy pro aplikaci neexistuje. Je třeba nastavit autocorrectionType = .no pro každé textové pole zvlášť nebo vytvořit podtřídu UITextField s přepsanou hodnotou.
Simulátor používá zjednodušený model zadávání z klávesnice Mac. Jazykový model automatické opravy není na simulátoru aktivní — pro testování používejte skutečné zařízení.
Uživatel může přidat slovo přes Nastavení > Obecné > Klávesnice > Nahrazování textu. Pro aplikaci neexistuje API pro programové přidávání slov do systémového slovníku automatické opravy.
Ne, keyboardType neovlivňuje automatickou opravu. Dokonce i pro klávesnici .numberPad může být automatická oprava aktivní, pokud není výslovně vypnuta přes autocorrectionType.
Klávesnice třetích stran mají své vlastní mechanismy automatické opravy a nepoužívají systémový UITextAutocorrectionType. Chování závisí na implementaci konkrétní klávesnice.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také