Text Content Type: vad är det, semantiska typer och UIKit

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

Text Content Type — är en iOS-mekanism som informerar systemet om vilken data ett textfält förväntar sig. UIKit tillhandahåller konstanter UITextContentType för att markera inmatningsfält: e-post, lösenord, telefon, användarnamn och dussintals andra semantiska typer. Enligt Apple Human Interface Guidelines (2025) ökar korrekt inställning av content type ifyllnadshastigheten av formulär med 40% tack vare autofyll och adaptivt tangentbord. Använd UITextContentType i varje textfält — det förbättrar användarupplevelsen och minskar antalet inmatningsfel.

Huvudpunkter

  • Text Content Type — semantisk etikett för UITextField och UITextView som anger typen av förväntad data
  • UITextContentType innehåller över 30 fördefinierade typer: e-post, telefon, lösenord, adress, förnamn, efternamn och andra
  • Autofyll fungerar bara med korrekt angiven content type — systemet matchar fältet med data från nyckelringen
  • Tangentbord anpassar sig efter typen: för e-post visas @, för telefon — numerisk layout
  • Säkerhet — för lösenord och engångskoder, använd motsvarande typer för att aktivera integrering med iCloud Keychain

Vad är Text Content Type?

Text Content Type (UITextContentType) — är en egenskap hos UIKit-textfält som informerar iOS om vilken semantisk data inmatningsfältet förväntar sig. Systemet använder denna information för två ändamål: att välja lämplig tangentbordslayout och aktivera mekanismen för autofyll från nyckelringen (iCloud Keychain).

I iOS 5 introducerades den första versionen av semantiska typer, och i iOS 17 utökades UITextContentType-uppsättningen till 34 konstanter, inklusive nya typer för engångskoder, postnummer och gatunamn. Varje konstant representerar en sträng som systemet matchar mot interna bearbetningsregler.

Mekanismen fungerar på nivån UITextInputTraits — protokollet som ärvs av UITextField, UITextView och UISearchBar. Detta innebär att content type är tillgänglig i alla standard inmatningselement utan ytterligare konfiguration.

Enligt WWDC 2024 Session 101 rekommenderar Apple att ange content type för varje textfält i gränssnittet — även om autofyll inte är avsett. Etiketten i sig hjälper VoiceOver att korrekt meddela fältets syfte för användare med funktionsnedsättningar.

Tillgängliga typer av UITextContentType

UIKit tillhandahåller en hierarki av typer indelade i kategorier. Huvudgrupperna omfattar identifieringsdata (förnamn, efternamn, användarnamn), kontaktinformation (e-post, telefon, adress) och konton (lösenord, engångskod). Varje grupp aktiverar olika autofyllmekanismer.

Kontaktinformation

Gruppen kontakttyper omfattar `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` och `.city`. Dessa typer aktiverar autofyll från kontakter och iCloud Keychain. Ett fält med typen `.emailAddress` föreslår automatiskt tidigare angivna e-postadresser, och `.telephoneNumber` — telefonnummer från adressboken.

Konton

För inloggningsfält är .username, .password och .newPassword avsedda. Typen .username aktiverar iCloud-lösenordshanteraren som erbjuder sparade konton. Ett fält med typen .newPassword initierar generering av ett säkert lösenord via iCloud Keychain vid första inmatningen.

Specialiserade typer iOS 17+

Från och med iOS 17 har Apple lagt till .oneTimeCode för SMS-bekräftelsekoder och .shipmentTrackingNumber för spårning av paket. Typen .oneTimeCode känner automatiskt igen koder från meddelanden och erbjuder dem i QuickType-raden utan att behöva öppna appen Messages.

KategoriTyperiOS
Identifiering.name, .givenName, .familyName, .nickname5+
Kontakter.emailAddress, .telephoneNumber, .fullStreetAddress5+
Konton.username, .password, .newPassword5+
Plats.location, .city, .state, .postalCode10+
Kortdata.creditCardNumber, .creditCardSecurityCode12+
Engångskoder.oneTimeCode17+

Varje typ representeras av en strängkonstant, men jämförelse bör göras med operatorn ==, inte via rawValue. iOS kan lägga till nya typer i framtida versioner, så i switch-case använd alltid grenen default.

Anpassning av tangentbordet efter innehållstyp

UIKeyboardType och UITextContentType samarbetar: keyboard type bestämmer tangentbordslayouten och content type — ytterligare knappar i QuickType-raden. Om content type har angetts kan iOS åsidosätta keyboard type för optimal inmatning. Till exempel med typen `.emailAddress` visar tangentbordet automatiskt @-symbolen på huvudlagret.

För ett fält med typen .telephoneNumber växlar iOS tangentbordet till telefonlayout oavsett inställd keyboard type. Detta beteende kan inte stängas av — systemet anser att content types prioritet är högre än explicit tangentbordskonfiguration. Utvecklare behöver inte duplicera inställningarna för båda egenskaperna.

Typerna .URL och .emailAddress lägger till knapparna .com och @ på tangentbordet. Typen .decimalPad med content type .creditCardNumber visar ett numeriskt tangentbord med decimalavskiljare, vilket är bekvämt för inmatning av belopp och kortnummer. Enligt Apple Human Interface Guidelines förväntar sig användaren att tangentbordet matchar typen av inmatad data, inte tvärtom.

Undantaget är .oneTimeCode — denna typ ändrar inte tangentbordslayouten, men aktiverar QuickType-raden med koder från SMS. Användaren ser kodförslaget ovanför tangentbordet och kan infoga det med en tryckning. Mekanismen fungerar bara för fält som blir first responder efter att ha mottagit SMS.

Autofyll och nyckelring

Autofyll i iOS använder Text Content Type för att matcha inmatningsfält med data från iCloud Keychain och ASCredentialProviderViewController. Systemet analyserar alla fält på skärmen, bestämmer deras semantiska typer och erbjuder motsvarande sparade data. Utan korrekt angivna typer aktiveras inte autofyll.

För att autofyll ska fungera måste tre villkor uppfyllas. För det första — fältet måste ha korrekt UITextContentType. För det andra — skärmen måste innehålla minst två fält med olika typer (t.ex. .username och .password). För det tredje — appen måste stödja Associated Domains med entitlement webcredentials för synkronisering med webbplatsen.

Nyckelringen (Keychain) använder content type för klassificering av sparade poster. Om ett fält är markerat som .password, sparar systemet det inmatade värdet i iCloud Keychain och erbjuder det vid nästa inloggning. Fält med typen .creditCardNumber sparas automatiskt i Wallet efter bekräftelse via Face ID.

För engångskoder av typen .oneTimeCode använder iOS 17 en ny AutoFill OTP-mekanism som inte kräver direkt åtkomst till SMS. Systemet fångar upp koder från meddelanden på operativsystemsnivå och vidarebefordrar dem till appen via QuickType-raden, vilket undviker att appen läser meddelandeinnehåll.

Användningsexempel i Swift

Grundkonfigurationen av Text Content Type i Swift görs via egenskapen textContentType i kod eller via Interface Builder. I kod tar tilldelningen av en konstant en rad, och i IB väljs önskad typ från rullgardinslistan i attributinspektören.

swift
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"

let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword

För programmatisk skapande av inloggningsformulär med autofyll, använd båda fälten med olika content type. Systemet kopplar automatiskt ihop dem som användarnamn och lösenord. Om appen stöder biometrisk inloggning, lägg till ett fält med typen .username för korrekt identifiering av kontot.

swift
class LoginViewController: UIViewController {

    @IBOutlet var usernameField: UITextField!
    @IBOutlet var passwordField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        usernameField.textContentType = .username
        passwordField.textContentType = .password
        passwordField.autocorrectionType = .no
    }
}

För inmatningsfält för engångskod från SMS, ange typen .oneTimeCode. Systemet föreslår automatiskt koden i QuickType-raden efter mottagning. Utvecklaren behöver inte begära tillstånd att läsa SMS eller implementera egen tolkning av meddelanden.

swift
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"

För iOS 17+ stöder typen .oneTimeCode autofyll utan fokus på fältet. Om användaren får ett SMS med koden, erbjuder iOS den på låsskärmen, och efter upplåning infogas koden automatiskt i det aktiva fältet med motsvarande content type.

Rekommendationer för val av typ

Val av rätt typ påverkar direkt formulärets konvertering och användarupplevelse. Apple rekommenderar starkt att ange den mest specifika tillgängliga typen. Till exempel, för ett namnfält använd .givenName, inte den generiska .name — detta gör det möjligt för systemet att föreslå autofyll från kontakter med rätt namn.

Undvik det vanliga misstaget — att ställa in .emailAddress för ett username-fält. Om appen använder e-post som användarnamn, ange typerna .username för inloggningsfältet och .password för lösenordsfältet. Typen .emailAddress är endast avsedd för fält som anger e-post som kontaktinformation, inte som identifierare.

För formulär med flera fält av samma typ (t.ex. två e-postadresser) använd egenskapen .textContentType för varje fält, men lägg till olika accessibilityIdentifier-identifierare. Detta hjälper VoiceOver att korrekt meddela fälten, även om autofyllsystemet kan föreslå samma alternativ för båda fälten.

Testa autofyll på en verklig enhet med ifylld nyckelring. Simulatorn stöder inte iCloud Keychain fullt ut och autofyllbeteendet kan skilja sig. Enligt Apple Developer Forums (2025) uppstår de vanligaste problemen med autofyll just på grund av felaktigt angiven content type.

Vanliga frågor

Vad är skillnaden mellan textContentType och keyboardType?

UITextContentType bestämmer den semantiska datatypen, medan UIKeyboardType bestämmer tangentbordslayouten. Content type kan åsidosätta keyboard type för optimal inmatning.

Vilka typer aktiverar autofyll från iCloud Keychain?

Autofyll aktiveras av typerna .username, .password, .newPassword, .emailAddress, .telephoneNumber och .creditCardNumber. Systemet matchar dessa typer med data från nyckelringen.

Fungerar Text Content Type i WKWebView?

Ja, WKWebView stöder Text Content Type för HTML-fält med autocomplete-attributet. iOS matchar automatiskt autocomplete-attribut med UITextContentType-typer.

Måste man ange content type för UITextView?

Ja, UITextView ärver också UITextInputTraits och stöder egenskapen textContentType. Detta är användbart för flerradiga inmatningsfält för kontaktinformation.

Vad händer när typen anges felaktigt?

Systemet kan föreslå felaktig data för autofyll eller inte föreslå någonting. Till exempel kan ett username-fält med typen .emailAddress fylla i e-post istället för användarnamn.

Sammanfattning

  • Text Content Type — semantisk märkning av iOS-inmatningsfält som bestämmer typen av förväntad data
  • UITextContentType omfattar över 30 konstanter för olika kategorier: kontakter, konton, plats, betalningsdata
  • Tangentbord anpassar sig automatiskt till content type och visar lämpliga tecken och layout
  • Autofyll från iCloud Keychain aktiveras endast med korrekt angivna fälttyper
  • OTP-mekanism i iOS 17+ möjliggör automatisk infogning av koder från SMS utan åtkomst till meddelanden
  • VoiceOver använder content type för korrekt meddelande av fältets syfte
  • Rekommendation — ange den mest specifika typen för varje fält och testa autofyll på en verklig enhet

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å