Autocorrection — väsen, mekanismer och UITextAutocorrectionType

Författare: IT Sectr Publicerad: 2026-07-08 Lästid: 7 min

Autocorrection är en inbyggd mekanism i iOS som automatiskt korrigerar stavfel vid textinmatning. UIKit hanterar autokorrigeringsbeteendet via egenskapen autocorrectionType i protokollet UITextInputTraits och stöder tre lägen: standard, aktiverat och inaktiverat. Enligt Apple Text Programming Guide (2025) analyserar autokorrigering den inmatade texten baserat på systemordboken och maskininlärning på enheten. Använd autocorrectionType för varje textfält separat — detta gör att du kan anpassa beteendet efter specifika inmatningsdata.

Huvudpunkter

  • Autocorrection — iOS-systemmekanism för automatisk korrigering av stavfel vid textinmatning
  • UITextAutocorrectionType stöder tre lägen: .default, .yes och .no för varje fält individuellt
  • Ordboken för autokorrigering bygger på iOS-systemordboken och en språkmodell tränad på enheten
  • Safe Keyboard — ett säkert tangentbord som inaktiverar autokorrigering för lösenords- och finansiella datafält
  • Lokalisering — autokorrigering fungerar för alla språk som stöds på tangentbordet, inklusive ytterligare layouter

Vad är Autocorrection?

Autocorrection (autokorrigering) är en funktion i operativsystemet iOS som automatiskt ersätter inmatade ord med troligen korrekta varianter när ett stavfel upptäcks. Mekanismen fungerar på nivån av UIKit-textfält och är tillgänglig i alla appar som använder standardinmatningselementen UITextField och UITextView.

Grunden för autokorrigering är en språkmodell tränad på miljontals textexempel för varje språk som stöds. Modellen fungerar helt på enheten (on-device), vilket garanterar konfidentialitet för inmatade data — texten skickas inte till Apples servrar för analys. Med varje iOS-uppdatering förfinas modellen och utökas med nya ord och regler.

Autokorrigering aktiveras automatiskt för alla textfält, om inte utvecklaren uttryckligen har inaktiverat den. Användaren kan helt inaktivera autokorrigering i systeminställningarna (Inställningar > Allmänt > Tangentbord > Autokorrigering), men utvecklaren kan också hantera detta beteende för enskilda fält via egenskapen autocorrectionType.

Enligt WWDC 2023 Session 204 presenterade Apple en förbättrad språkmodell för autokorrigering baserad på Transformer, som tar hänsyn till hela meningens sammanhang, inte bara det sista ordet. Detta minskade antalet falska korrigeringar med 30% jämfört med den tidigare modellen baserad på n-gram.

Autokorrigeringslägen i iOS

UITextAutocorrectionType är en uppräkning med tre värden som bestämmer autokorrigeringsbeteendet för ett specifikt textfält. Varje värde ställs in via egenskapen autocorrectionType, tillgänglig i Interface Builder och i kod när fältet skapas.

Läget .default

Värdet .default innebär att fältet ärver den globala autokorrigeringsinställningen från systemets tangentbordsparametrar. Detta läge rekommenderas för de flesta textfält eftersom det respekterar användarens val. Om användaren har inaktiverat autokorrigering i inställningarna kommer ett fält med .default inte heller att använda den.

Läget .yes

Värdet .yes tvingar på autokorrigering för fältet oavsett systeminställningen. Detta läge bör endast användas för fält där stavningsnoggrannhet är kritisk — till exempel i textredigerare, antecknings- eller meddelandefält. Apple rekommenderar att .yes används med försiktighet, eftersom påtvingad aktivering kan strida mot användarens förväntningar.

Läget .no

Värdet .no inaktiverar autokorrigering för ett specifikt fält. Detta läge är obligatoriskt för lösenordsfält (secure text entry), e-postadresser, bekräftelsekoder och sökfrågor. I dessa fält är autokorrigering inte bara värdelös utan också skadlig — den kan ersätta korrekt inmatade data med felaktiga.

LägeVärdeRekommendation
.defaultÄrver systeminställningenDe flesta inmatningsfält
.yesTvingat påslagetTextredigerare, anteckningar
.noTvingat avslagetLösenord, e-post, sökning, koder

Språkmodell och ordbok

iOS autokorrigerings språkmodell använder en kombination av en statisk ordbok och en dynamiskt inlärd modell. Systemordboken innehåller de mest använda orden för varje språk, och den Transformer-baserade språkmodellen analyserar sammanhanget och sannolikheten för ersättning. Modellen lär sig på enheten baserat på texter som användaren matar in.

Användaren kan lägga till ord i den personliga ordboken via tangentbordsinställningarna (Inställningar > Allmänt > Tangentbord > Textersättning). Tillagda ord sparas i iCloud och synkroniseras mellan enheter via samma Apple ID. Systemet kommer inte att korrigera ord från den personliga ordboken, vilket är bekvämt för namn, varumärken och tekniska termer.

För specifika domäner — medicinska, juridiska, tekniska — kan standardordboken innehålla otillräckligt med termer. I sådana appar rekommenderas det att antingen inaktivera autokorrigering för berörda fält eller använda anpassad textersättning via UIResponder-metoden .replacementDictionary för iOS 17+.

Enligt Apple Machine Learning Research (2024) bearbetar den nya autokorrigeringsmodellen baserad på Transformer-arkitekturen upp till 10 token kontext (jämfört med 3 token i den tidigare modellen), vilket möjliggör mer exakt bestämning av användarens avsikt. Modellen tar inte bara hänsyn till stavning utan också till meningens grammatiska struktur.

Safe Keyboard och konfidentiella data

Safe Keyboard är ett säkert inmatningsläge som automatiskt aktiveras för fält med secureTextEntry = true. I detta läge inaktiveras autokorrigering, automatisk versalisering och prediktiv inmatning av systemet oavsett inställda värden för autocorrectionType. Systemet blockerar också åtkomst till den personliga ordboken och textersättningar.

Safe Keyboard förhindrar läckage av inmatade data via autokorrigeringsmekanismer. Om autokorrigering var aktiv för ett lösenordsfält skulle systemet kunna spara det inmatade lösenordet i den personliga ordboken eller skicka det till Apples servrar för modellträning. Safe Keyboard garanterar att konfidentiella data inte lämnar appens gränser.

För finansiella appar aktiveras Safe Keyboard automatiskt endast för fält med secureTextEntry. För fält för kortnummer, utgångsdatum och CVV-koder måste utvecklaren manuellt inaktivera autokorrigering genom att ställa in autocorrectionType = .no och keyboardType = .numberPad eller .phonePad.

Från och med iOS 17 stöder Safe Keyboard skydd mot avlyssning via tangentbord från tredje part. Om användaren har installerat ett tangentbord från App Store, när secureTextEntry aktiveras, ersätter systemtangentbordet automatiskt tangentbordet från tredje part, även om det var valt som standard. Detta garanterar att lösenord endast matas in via det säkra systemtangentbordet.

Konfiguration via Swift-kod

Hantering av autokorrigering i Swift sker via egenskapen autocorrectionType för UITextField- och UITextView-objekt. Egenskapen är tillgänglig för både läsning och skrivning och kan ändras dynamiskt beroende på inmatningssammanhanget. Konfiguration via Interface Builder är tillgänglig i attributinspektören under namnet Correction.

swift
let textField = UITextField()
textField.autocorrectionType = .no

För inloggningsformulär bör autokorrigering inaktiveras för lösenordsfältet och lämnas som standard för inloggningsfältet. E-postfältet rekommenderas också att lämnas utan autokorrigering, eftersom @-symbolen och domännamn ofta ersätts felaktigt. För användarnamnsfältet kan autokorrigering vara påslaget om användarnamnet är ett läsbart ord.

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

För UITextView görs konfigurationen av autokorrigering på liknande sätt. Detta är särskilt viktigt för flerradiga kommentars-, meddelande- och anteckningsfält, där autokorrigering ger störst nytta men också kan orsaka obehag vid inmatning av tekniska termer eller kod.

swift
let textView = UITextView()
textView.autocorrectionType = .default

För dynamisk ändring av autokorrigering, använd delegaten UITextFieldDelegate. Metoden textFieldDidBeginEditing anropas när fältet aktiveras och i den kan autocorrectionType ändras beroende på aktuellt sammanhang eller fältets roll, som kan förändras under appens drift.

När ska man inaktivera autokorrigering

Autokorrigering bör inaktiveras i fält där noggrannheten hos inmatade data är kritisk och systemet inte korrekt kan bestämma användarens avsikt. Huvudfall: lösenords- och säkerhetsdatafält, e-postadressfält, sökfält, kod- och programmeringskodinmatningsfält, samt fält med icke-standardiserade dataformat.

För sökfält (UISearchBar) är autokorrigering inaktiverad som standard, vilket motsvarar användarnas förväntningar. Vid sökning kan användaren mata in ofullständiga ord, tekniska termer eller frågor på olika språk, och autokorrigering skulle bara vara i vägen. Likaså för fält för URL och domännamn.

I meddelandeappar och kommunikationsappar är autokorrigering vanligtvis påslagen, men vid inmatning av slang, förkortningar och informellt ordförråd kan det orsaka obehag. I sådana fall kan användaren inaktivera autokorrigering via tangentbordsinställningarna, eller utvecklaren kan tillhandahålla en växel direkt i appens gränssnitt.

Enligt Apples Human Interface Guidelines bör autokorrigering inaktiveras för alla fält där inmatade data kanske inte finns i systemordboken: ordernummer, bokningskoder, identifierare, IMEI, MAC-adresser. Om fältet accepterar alfanumeriska data i ett icke-standardformat — inaktivera autokorrigering.

Vanliga frågor

Hur inaktiverar man helt autokorrigering i hela appen?

Det finns ingen global inaktivering av autokorrigering för en app. Du måste ställa in autocorrectionType = .no för varje textfält separat eller skapa en underklass till UITextField med ett överskrivet värde.

Varför fungerar inte autokorrigering i simulatorn?

Simulatorn använder en förenklad inmatningsmodell från Mac-tangentbordet. Språkmodellen för autokorrigering är inte aktiv i simulatorn — använd en verklig enhet för testning.

Hur lägger man till ett ord i den personliga ordboken?

Användaren kan lägga till ett ord via Inställningar > Allmänt > Tangentbord > Textersättning. Det finns inget API för appar att programmatiskt lägga till ord i systemets autokorrigeringsordbok.

Inaktiverar inställningen av keyboardType autokorrigering?

Nej, keyboardType påverkar inte autokorrigering. Även för .numberPad-tangentbordet kan autokorrigering vara aktiv, om den inte uttryckligen har inaktiverats via autocorrectionType.

Fungerar autokorrigering för tangentbord från tredje part?

Tangentbord från tredje part har egna autokorrigeringsmekanismer och använder inte systemets UITextAutocorrectionType. Beteendet beror på implementeringen av det specifika tangentbordet.

Sammanfattning

  • Autocorrection — systemfunktion i iOS för automatisk korrigering av stavfel i textfält
  • Tre lägen UITextAutocorrectionType: .default (ärver inställningar), .yes (påslaget), .no (avslaget)
  • Transformer språkmodell bearbetar upp till 10 token kontext och fungerar helt på enheten
  • Safe Keyboard inaktiverar automatiskt autokorrigering för fält med secureTextEntry = true
  • Autokorrigering är värdelös för fält med lösenord, e-post, koder, sökning och icke-standardiserade dataformat
  • Konfiguration görs via egenskapen autocorrectionType för varje fält individuellt
  • Rekommendation — testa autokorrigeringsbeteendet på en verklig enhet med aktiv språkmodell

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också