Autocapitalization: vad det är, typer och UITextAutocapitalizationType

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

Autocapitalization — är en iOS-mekanism som automatiskt omvandlar första bokstaven i inmatad text till versal i vissa sammanhang. UIKit tillhandahåller egenskapen autocapitalizationType i protokollet UITextInputTraits med fyra lägen: none, words, sentences och allCharacters. Enligt Apple Text Programming Guide (2025) förbättrar korrekt konfiguration av automatisk versalisering användarupplevelsen och minskar antalet manuella korrigeringar vid inmatning. Använd läget sentences för de flesta textfält och none för användarnamn och lösenord.

Huvudpunkter

  • Autocapitalization — automatisk omvandling av första bokstaven till versal i UIKit-inmatningsfält
  • UITextAutocapitalizationType omfattar fyra lägen: none, words, sentences och allCharacters
  • Läget sentences — vanligast, gör första bokstaven i varje mening till versal
  • Läget words — gör första bokstaven i varje ord till versal, bekvämt för fält med för- och efternamn
  • Läget none — obligatoriskt för fält med lösenord, e-post, sökfrågor och bekräftelsekoder

Vad är Autocapitalization?

Autocapitalization (automatisk versalisering) — är en funktion i iOS-operativsystemet som automatiskt omvandlar det första tecknet i texten till versal när vissa villkor uppfylls. Mekanismen styrs via egenskapen autocapitalizationType, tillgänglig för alla element som implementerar protokollet UITextInputTraits: UITextField, UITextView och UISearchBar.

Funktionen arbetar på nivån av iOS-textmotorn och aktiveras i ögonblicket för inmatning av varje tecken. Systemet analyserar markörens position och omgivande text för att avgöra om det aktuella inmatade tecknet ska omvandlas till versal. Om villkoret uppfylls ersätter iOS automatiskt den lilla bokstaven med en versal innan den visas i fältet.

Enligt Apple Human Interface Guidelines (2025) är automatisk versalisering en del av ett bredare system för prediktiv inmatning som även omfattar automatisk korrigering och prediktiv skrivning. Användaren kan inaktivera alla dessa funktioner globalt i systeminställningarna (Inställningar > Allmänt > Tangentbord), men utvecklaren hanterar dem även på nivån av specifika fält.

Till skillnad från automatisk korrigering använder automatisk versalisering inte en språkmodell — den fungerar enligt enkla regler: efter punkt och mellanslag, i början av texten, efter nyradstecken. Undantaget är läget words, där första bokstaven i varje ord blir versal oavsett sammanhang.

Lägen för automatisk versalisering

UITextAutocapitalizationType — är en uppräkning av fyra värden som definierar strategin för automatisk omvandling av versaler. Varje läge är avsett för en specifik typ av textfält och löser en specifik uppgift för användarupplevelsen.

None — utan automatisk versalisering

Läget .none inaktiverar helt automatisk omvandling av versaler. Alla tecken matas in i samma versal-/gemensform som användaren skriver. Detta läge är obligatoriskt för fält med lösenord, e-postadresser, smeknamn, sökfrågor och alla fält där versaler/gemener har betydelse för databehandling på servern.

Words — varje ord med versal

Läget .words gör första bokstaven i varje inmatat ord till versal. Systemet bestämmer ordgränsen efter mellanslag och omvandlar första tecknet efter mellanslag till versal. Läget är bekvämt för inmatningsfält för namn, efternamn, stadsnamn, gator och andra fält där varje ord ska börja med versal.

Sentences — meningsbörjan

Läget .sentences — vanligast och används som standard för de flesta textfält. Systemet gör första bokstaven efter punkt, utropstecken eller frågetecken följt av mellanslag till versal. Läget är idealiskt för fält för anteckningar, meddelanden, kommentarer och andra flerradiga texter.

All Characters — alla versaler

Läget .allCharacters omvandlar alla inmatade tecken till versaler. Detta läge är likvärdigt med att ständigt hålla ned Caps Lock och används för fält där data måste vara i versaler: postnummer, landskoder, förkortningar, ordernummer. Bör användas med försiktighet eftersom text i versaler är svårare att läsa.

LägeBeskrivningInmatningsexempelRekommendation
.noneInga förändringarjohn@mail.comE-post, lösenord, sökning
.wordsVarje ordAnna AnderssonNamn, adress, stad
.sentencesMeningsbörjanHej. Hur mår du?Meddelanden, anteckningar
.allCharactersAlla versalerABC-123Koder, index

Hur automatisk versal fungerar

Mekanismen för automatisk versalisering aktiveras i steget för bearbetning av tangenttryckning, innan tecknet visas på skärmen. När användaren trycker på en tangent kontrollerar UITextInputTraits markörens aktuella position och tillämpar regeln för omvandling av versaler enligt inställd autocapitalizationType.

För läget .sentences övervakar systemet utlösande tecken: punkt (.), utropstecken (!), frågetecken (?) samt nyradstecknet ( ) när läget är aktiverat. Efter detektion av ett utlösande tecken och följande mellanslag sätter systemet en flagga “väntar på versal” för nästa inmatade tecken.

Läget .words övervakar mellanslagstecknet som utlösare. Efter varje mellanslag förväntar systemet en versal för nästa ord. Det finns dock undantag: efter bindestreck, apostrof och andra skiljetecken inuti ett ord sätts ingen versal. Till exempel förblir “O’Brien” korrekt.

En viktig egenskap — automatisk versalisering fungerar endast för första tecknet i ett ord. Om användaren matar in ett ord som innehåller versaler i mitten (till exempel iPhone eller macOS) ändrar systemet dem inte, eftersom omvandlingen endast tillämpas på första tecknet efter utlösaren. Detta innebär att varumärkes- och produktnamn med icke-standardiserad versalisering inte skadas.

När du ska inaktivera automatisk versalisering

Automatisk versalisering bör inaktiveras i fält där versaler/gemener har betydelse för korrekt databehandling. Huvudfall: fält för e-postadresser, smeknamn och användarnamn, lösenord, sökfrågor, URL-adresser, bekräftelsekoder, IMEI och serienummer. I alla dessa fall kommer automatisk ändring av versaler/gemener att leda till fel vid bearbetning på servern.

För sökfält (UISearchBar) är automatisk versalisering inaktiverad som standard, vilket motsvarar användarnas förväntningar. En sökfråga kan matas in i valfritt versal-/gemensläge och servern konverterar den vanligtvis själv till gemener. Om du aktiverar automatisk versalisering för sökning måste användaren varje gång manuellt korrigera versalen i början av frågan.

I registreringsformulär bör fältet username eller nickname ha läget .none, eftersom många system skiljer på versaler och gemener i användarnamn. E-postfältet bör också vara utan automatisk versalisering — även om domännamn inte är skiftlägeskänsliga kan den lokala delen av e-post teoretiskt skilja på versaler och gemener, även om detta sällan förekommer i praktiken.

Enligt Apple Developer Documentation ärver fält med secureTextEntry (lösenord) automatiskt autocapitalizationType = .none, även om utvecklaren uttryckligen har angett ett annat värde. Systemet har högsta prioritet för skyddad inmatning och ignorerar alla försök att aktivera automatisk versalisering för ett lösenordsfält.

Konfigurationsexempel i Swift

Konfiguration av automatisk versalisering i Swift görs via egenskapen autocapitalizationType. Egenskapen är tillgänglig för UITextField, UITextView och UISearchBar. Värdet kan ställas in både i kod och via Interface Builder i attributinspektören, där läget kallas Capitalization.

swift
let nameField = UITextField()
nameField.autocapitalizationType = .words

let emailField = UITextField()
emailField.autocapitalizationType = .none

För ett kontaktformulär konfigurerar du varje fält enligt dess semantik: namn — .words, e-post — .none, meddelande — .sentences. En sådan kombination ger bästa användarupplevelse och minimerar behovet av manuell korrigering av versaler.

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

För programmatisk ändring av läget under körning använder du delegaten UITextFieldDelegate. Om ett fält till exempel kan användas i olika sammanhang ändrar du autocapitalizationType i metoden textFieldDidBeginEditing beroende på formulärets aktuella arbetsläge.

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

Lokalisering och automatisk versalisering

Automatisk versalisering beror på inmatningsspråket som är inställt på användarens tangentbord. För olika språk kan reglerna för omvandling av versaler skilja sig åt. I turkiska blir bokstaven “i” i versal “İ” (med prick) och “I” i gemen blir “ı” (utan prick). iOS tar automatiskt hänsyn till dessa egenskaper.

För ryska fungerar automatisk versalisering enligt samma regler som för engelska: versal efter punkt, i början av mening och efter ny rad. Problem kan uppstå med bokstaven “jo” — även om den finns i systemordboken visar inte alla tangentbordslayouter den på huvudlagret och automatisk versalisering omvandlar den korrekt till versal.

För kinesiska, japanska och koreanska tillämpas inte automatisk versalisering eftersom dessa språk inte har begreppet versaler och gemener. Läget autocapitalizationType ignoreras av systemet vid användning av motsvarande tangentbord och fältet beter sig som i läget .none oavsett inställt värde.

För arabiska och hebreiska tillämpas inte heller automatisk versalisering eftersom dessa språk använder sitt eget skriftsystem utan uppdelning i gemener och versaler. iOS-systemet bestämmer korrekt inmatningsspråk och ignorerar inställningar för automatisk versalisering för språk där detta begrepp inte finns.

Vanliga frågor

Kan läget för automatisk versalisering ändras dynamiskt?

Ja, egenskapen autocapitalizationType kan ändras när som helst, även när fältet redan är aktivt. Ändringen träder i kraft vid nästa teckeninmatning.

Inaktiverar secureTextEntry automatisk versalisering?

Ja, för fält med isSecureTextEntry = true ställer systemet automatiskt in autocapitalizationType = .none. Detta beteende kan inte ändras programmatiskt.

Fungerar automatisk versalisering för UITextView?

Ja, UITextView stöder fullt ut autocapitalizationType. Detta är särskilt användbart för flerradiga fält där läget .sentences fungerar mest naturligt.

Hur påverkar automatisk versalisering ett lösenord?

Om ett fält inte är markerat som secureTextEntry men används för lösenordsinmatning kan automatisk versalisering ändra lösenordet. Inaktivera det alltid i fält där versaler/gemener har betydelse.

Finns det skillnad mellan simulator och enhet?

simulatorn fungerar automatisk versalisering via Macens fysiska tangentbord och kan bete sig annorlunda. Testa på en verklig enhet för korrekt beteende.

Sammanfattning

  • Autocapitalization — funktion för automatisk omvandling av första tecknet till versal i iOS inmatningsfält
  • Fyra lägen UITextAutocapitalizationType: none, words, sentences, allCharacters
  • Läget .sentences lämpligt för de flesta fält, aktiveras efter ., !, ? och ny rad
  • Läget .none obligatoriskt för e-post, lösenord, sökning och skiftlägeskänsliga fält
  • Läget .words optimalt för fält med namn, efternamn, stad och adress
  • Lokalisering — för turkiska beaktas den särskilda regeln för bokstaven İ/ı
  • Rekommendation — konfigurera automatisk versalisering för varje fält enligt dess semantik

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å