Autocorrection egy beépített iOS-mechanizmus, amely automatikusan kijavítja a helyesírási hibákat szövegbevitelkor. Az UIKit az autocorrectionType tulajdonságon keresztül kezeli az automatikus javítás viselkedését a UITextInputTraits protokollban, három módot támogatva: alapértelmezett, bekapcsolt és kikapcsolt. Az Apple Text Programming Guide (2025) szerint az automatikus javítás a bevitt szöveget a rendszerszótár és az eszközön történő gépi tanulás alapján elemzi. Használja az autocorrectionType-ot minden szövegmezőhöz külön-külön — ez lehetővé teszi a viselkedés hozzáigazítását a bevitt adatok sajátosságaihoz.
Főbb pontok
Autocorrection (automatikus javítás) az iOS operációs rendszer egyik funkciója, amely automatikusan lecseréli a beírt szavakat feltételezhetően helyes változatokra, amikor helyesírási hibát észlel. A mechanizmus az UIKit szövegmezőinek szintjén működik, és elérhető minden olyan alkalmazásban, amely a szabványos UITextField és UITextView beviteli elemeket használja.
Az automatikus javítás alapja egy nyelvi modell, amely minden támogatott nyelvhez millió szöveges példán van betanítva. A modell teljes mértékben az eszközön (on-device) működik, ami garantálja a bevitt adatok bizalmas kezelését — a szöveg nem kerül az Apple szervereire elemzés céljából. Minden iOS-frissítéssel a modell pontosabbá válik, és új szavakkal és szabályokkal bővül.
Az automatikus javítás automatikusan aktiválódik minden szövegmezőhöz, hacsak a fejlesztő kifejezetten ki nem kapcsolta. A felhasználó teljesen kikapcsolhatja az automatikus javítást a rendszerbeállításokban (Beállítások > Általános > Billentyűzet > Automatikus javítás), de a fejlesztő is kezelheti ezt a viselkedést egyes mezőkhöz az autocorrectionType tulajdonságon keresztül.
A WWDC 2023 Session 204 szerint az Apple egy továbbfejlesztett, Transformer alapú automatikus javítási nyelvi modellt mutatott be, amely a teljes mondat kontextusát veszi figyelembe, nem csak az utolsó szót. Ez lehetővé tette a hamis javítások számának 30%-os csökkentését a korábbi, n-gram alapú modellhez képest.
UITextAutocorrectionType egy három értékű felsorolás, amely meghatározza az automatikus javítás viselkedését egy adott szövegmezőhöz. Minden érték az autocorrectionType tulajdonságon keresztül állítható be, amely elérhető az Interface Builder-ben és kódban a mező létrehozásakor.
A .default érték azt jelenti, hogy a mező örökli az automatikus javítás globális beállítását a billentyűzet rendszerparamétereiből. Ez a mód ajánlott a legtöbb szövegmezőhöz, mivel tiszteletben tartja a felhasználó választását. Ha a felhasználó kikapcsolta az automatikus javítást a beállításokban, a .default mező sem fogja használni.
A .yes érték kényszeríti az automatikus javítás bekapcsolását a mezőhöz, függetlenül a rendszerbeállítástól. Ezt a módot csak olyan mezőknél szabad használni, ahol a helyesírási pontosság kritikus — például szövegszerkesztőkben, jegyzet- vagy üzenetmezőkben. Az Apple óvatosságot javasol a .yes használatánál, mert a kényszerített bekapcsolás ellentmondhat a felhasználó elvárásainak.
A .no érték kikapcsolja az automatikus javítást az adott mezőhöz. Ez a mód kötelező a jelszómezőkhöz (secure text entry), e-mail címekhez, megerősítő kódokhoz és keresési lekérdezésekhez. Ezekben a mezőkben az automatikus javítás nemcsak haszontalan, hanem káros is — lecserélheti a helyesen bevitt adatokat hibásakra.
| Mód | Érték | Javaslat |
|---|---|---|
| .default | Örökli a rendszerbeállítást | A legtöbb beviteli mező |
| .yes | Kényszerítve bekapcsolva | Szövegszerkesztők, jegyzetek |
| .no | Kényszerítve kikapcsolva | Jelszavak, e-mail, keresés, kódok |
Az iOS automatikus javításának nyelvi modellje egy statikus szótár és egy dinamikusan tanuló modell kombinációját használja. A rendszerszótár tartalmazza a leggyakrabban használt szavakat minden nyelvhez, a Transformer alapú nyelvi modell pedig elemzi a kontextust és a csere valószínűségét. A modell a felhasználó által bevitt szövegek alapján tanul az eszközön.
A felhasználó szavakat adhat hozzá a személyes szótárhoz a billentyűzetbeállításokon keresztül (Beállítások > Általános > Billentyűzet > Szövegcsere). A hozzáadott szavak az iCloud-ban tárolódnak és szinkronizálódnak az eszközök között ugyanazon Apple ID-n keresztül. A rendszer nem fogja javítani a személyes szótárban lévő szavakat, ami kényelmes nevek, márkák és műszaki kifejezések esetében.
Speciális területekhez — orvosi, jogi, műszaki — a standard szótár nem tartalmazhat elegendő kifejezést. Az ilyen alkalmazásokban ajánlott vagy kikapcsolni az automatikus javítást az érintett mezőkhöz, vagy egyéni szövegcsere használata az UIResponder .replacementDictionary metódusán keresztül iOS 17+ esetén.
Az Apple Machine Learning Research (2024) szerint a Transformer architektúrán alapuló új automatikus javítási modell akár 10 token kontextust dolgoz fel (szemben az előző modell 3 tokenjével), ami lehetővé teszi a felhasználó szándékának pontosabb meghatározását. A modell nemcsak a helyesírást, hanem a mondat nyelvtani szerkezetét is figyelembe veszi.
Safe Keyboard egy védett beviteli mód, amely automatikusan aktiválódik a secureTextEntry = true mezőkhöz. Ebben a módban az automatikus javítás, az automatikus nagybetűsítés és a prediktív bevitel a rendszer által ki van kapcsolva, függetlenül az autocorrectionType beállított értékeitől. A rendszer blokkolja a hozzáférést a személyes szótárhoz és a szövegcserékhez is.
A Safe Keyboard megakadályozza a bevitt adatok kiszivárgását az automatikus javítás mechanizmusain keresztül. Ha az automatikus javítás aktív lenne egy jelszómezőhöz, a rendszer elmenthetné a beírt jelszót a személyes szótárba, vagy elküldhetné az Apple szervereire a modell betanításához. A Safe Keyboard garantálja, hogy a bizalmas adatok nem hagyják el az alkalmazás határait.
Pénzügyi alkalmazásokhoz a Safe Keyboard csak a secureTextEntry mezőkhöz aktiválódik automatikusan. A kártyaszámok, lejárati dátumok és CVV kódok mezőihez a fejlesztőnek manuálisan kell kikapcsolnia az automatikus javítást az autocorrectionType = .no és a keyboardType = .numberPad vagy .phonePad beállításával.
Az iOS 17-től kezdve a Safe Keyboard támogatja a harmadik féltől származó billentyűzetek általi elfogás elleni védelmet. Ha a felhasználó billentyűzetet telepített az App Store-ból, a secureTextEntry aktiválásakor a rendszerbillentyűzet automatikusan lecseréli a harmadik féltől származó billentyűzetet, még akkor is, ha az alapértelmezettként volt kiválasztva. Ez garantálja, hogy a jelszavak csak a biztonságos rendszerbillentyűzeten keresztül kerüljenek bevitelre.
Az automatikus javítás kezelése Swift-ben az UITextField és UITextView objektumok autocorrectionType tulajdonságán keresztül történik. A tulajdonság olvasásra és írásra is elérhető, és dinamikusan módosítható a beviteli kontextustól függően. Az Interface Builder-en keresztüli beállítás az attribútumvizsgálóban érhető el a Correction név alatt.
let textField = UITextField()
textField.autocorrectionType = .no
Bejelentkezési űrlaphoz az automatikus javítást ki kell kapcsolni a jelszómezőhöz, és alapértelmezetten bekapcsolva hagyni a bejelentkezési mezőhöz. Az e-mail mezőt szintén ajánlott automatikus javítás nélkül hagyni, mivel a @ szimbólumot és a domain neveket gyakran hibásan cseréli le. A felhasználónév mezőhöz az automatikus javítás bekapcsolható, ha a felhasználónév egy olvasható szó.
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
}
}
UITextView esetén az automatikus javítás beállítása hasonló módon történik. Ez különösen fontos a többsoros megjegyzés-, üzenet- és jegyzetmezőknél, ahol az automatikus javítás a legnagyobb előnyt nyújtja, de kellemetlenséget is okozhat műszaki kifejezések vagy kód beírásakor.
let textView = UITextView()
textView.autocorrectionType = .default
Az automatikus javítás dinamikus módosításához használja az UITextFieldDelegate delegáltat. A textFieldDidBeginEditing metódus a mező aktiválásakor hívódik meg, és ebben módosítható az autocorrectionType az aktuális kontextustól vagy a mező szerepétől függően, amely az alkalmazás működése során változhat.
Az automatikus javítást ki kell kapcsolni azokban a mezőkben, ahol a bevitt adatok pontossága kritikus, és a rendszer nem tudja helyesen meghatározni a felhasználó szándékát. Fő esetek: jelszó- és biztonságos adatmezők, e-mail cím mezők, keresősávok, kód- és programkód-beviteli mezők, valamint a nem szabványos adatformátumú mezők.
Keresősávokhoz (UISearchBar) az automatikus javítás alapértelmezetten ki van kapcsolva, ami megfelel a felhasználók elvárásainak. Kereséskor a felhasználó hiányos szavakat, műszaki kifejezéseket vagy különböző nyelvű lekérdezéseket írhat be, és az automatikus javítás csak zavarná. Hasonlóan a URL- és domainnév-beviteli mezőkhöz.
Üzenetküldőkben és kommunikációs alkalmazásokban az automatikus javítás általában be van kapcsolva, de szleng, rövidítések és informális szókincs beírásakor kellemetlenséget okozhat. Ilyen esetekben a felhasználó kikapcsolhatja az automatikus javítást a billentyűzetbeállításokon keresztül, vagy a fejlesztő kapcsolót helyezhet el közvetlenül az alkalmazás felületén.
Az Apple Human Interface Guidelines szerint az automatikus javítást ki kell kapcsolni minden olyan mezőhöz, ahol a bevitt adatok nem találhatók meg a rendszerszótárban: rendelésszámok, foglalási kódok, azonosítók, IMEI, MAC-címek. Ha a mező alfanumerikus adatokat fogad nem szabványos formátumban — kapcsolja ki az automatikus javítást.
Gyakran ismételt kérdések
Az automatikus javítás globális kikapcsolása egy alkalmazásban nem létezik. Be kell állítani az autocorrectionType = .no értéket minden szövegmezőhöz külön-külön, vagy létre kell hozni egy UITextField alosztályt felülírt értékkel.
A szimulátor egy egyszerűsített beviteli modellt használ a Mac billentyűzetéről. Az automatikus javítás nyelvi modellje nem aktív a szimulátorban — teszteléshez használjon valós eszközt.
A felhasználó a Beállítások > Általános > Billentyűzet > Szövegcsere útvonalon adhat hozzá szót. Az alkalmazások számára nincs API a szavak programozott hozzáadásához a rendszer automatikus javítási szótárához.
Nem, a keyboardType nem befolyásolja az automatikus javítást. Még a .numberPad billentyűzet esetén is aktív lehet az automatikus javítás, ha nem kapcsolták ki kifejezetten az autocorrectionType-on keresztül.
A harmadik féltől származó billentyűzetek saját automatikus javítási mechanizmusokkal rendelkeznek, és nem használják a rendszer UITextAutocorrectionType-ot. A viselkedés az adott billentyűzet implementációjától függ.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is