Text Content Type — is een iOS-mechanisme dat het systeem informeert welke gegevens een tekstveld verwacht. UIKit biedt de constanten UITextContentType voor het markeren van invoervelden: e-mail, wachtwoord, telefoon, gebruikersnaam en tientallen andere semantische typen. Volgens Apple Human Interface Guidelines (2025) verhoogt het correct instellen van content type de invulsnelheid van formulieren met 40% dankzij automatisch aanvullen en adaptief toetsenbord. Gebruik UITextContentType in elk tekstveld — het verbetert de gebruikerservaring en vermindert het aantal invoerfouten.
Belangrijkste punten
Text Content Type (UITextContentType) — is een eigenschap van UIKit-tekstvelden die iOS informeert welke semantische gegevens het invoerveld verwacht. Het systeem gebruikt deze informatie voor twee doeleinden: het selecteren van de juiste toetsenbordindeling en het activeren van het mechanisme voor automatisch aanvullen uit de sleutelketen (iCloud Keychain).
In iOS 5 werd de eerste versie van semantische typen geïntroduceerd, en in iOS 17 werd de set UITextContentType uitgebreid naar 34 constanten, waaronder nieuwe typen voor eenmalige codes, postcodes en straatnamen. Elke constante vertegenwoordigt een tekenreeks die het systeem koppelt aan interne verwerkingsregels.
Het mechanisme werkt op het niveau van UITextInputTraits — het protocol dat wordt overgeërfd door UITextField, UITextView en UISearchBar. Dit betekent dat content type beschikbaar is in alle standaard invoerelementen zonder extra configuratie.
Volgens WWDC 2024 Session 101 raadt Apple aan om voor elk tekstveld in de interface een content type op te geven — zelfs als automatisch aanvullen niet is voorzien. Het label zelf helpt VoiceOver om het doel van het veld correct aan te kondigen voor gebruikers met een beperking.
UIKit biedt een hiërarchie van typen, verdeeld in categorieën. De belangrijkste groepen omvatten identificatiegegevens (naam, achternaam, gebruikersnaam), contactgegevens (e-mail, telefoon, adres) en accounts (wachtwoord, eenmalige code). Elke groep activeert verschillende mechanismen voor automatisch aanvullen.
De groep contacttypen omvat `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` en `.city`. Deze typen activeren automatisch aanvullen uit contacten en iCloud Keychain. Een veld met het type `.emailAddress` suggereert automatisch eerder ingevoerde e-mailadressen, en `.telephoneNumber` — telefoonnummers uit het adresboek.
Voor inlogvelden zijn .username, .password en .newPassword bedoeld. Het type .username activeert de iCloud-wachtwoordbeheerder die opgeslagen accounts aanbiedt. Een veld met het type .newPassword initieert het genereren van een veilig wachtwoord via iCloud Keychain bij de eerste invoer.
Vanaf iOS 17 heeft Apple .oneTimeCode voor SMS-bevestigingscodes en .shipmentTrackingNumber voor het volgen van zendingen toegevoegd. Het type .oneTimeCode herkent automatisch codes uit berichten en biedt ze aan in de QuickType-balk zonder dat u de app Messages hoeft te openen.
| Categorie | Typen | iOS |
|---|---|---|
| Identificatie | .name, .givenName, .familyName, .nickname | 5+ |
| Contacten | .emailAddress, .telephoneNumber, .fullStreetAddress | 5+ |
| Accounts | .username, .password, .newPassword | 5+ |
| Locatie | .location, .city, .state, .postalCode | 10+ |
| Kaartgegevens | .creditCardNumber, .creditCardSecurityCode | 12+ |
| Eenmalige codes | .oneTimeCode | 17+ |
Elk type wordt vertegenwoordigd door een tekenreeksconstante, maar ze moeten worden vergeleken met de operator ==, niet via rawValue. iOS kan in toekomstige versies nieuwe typen toevoegen, dus gebruik in switch-case altijd de default-tak.
UIKeyboardType en UITextContentType werken samen: keyboard type bepaalt de toetsenbordindeling en content type — de extra knoppen in de QuickType-balk. Als content type is opgegeven, kan iOS het keyboard type overschrijven voor optimale invoer. Bij het type `.emailAddress` toont het toetsenbord bijvoorbeeld automatisch het @-symbool op de hoofdlaag.
Voor een veld met het type .telephoneNumber schakelt iOS het toetsenbord over naar de telefoonindeling, ongeacht het ingestelde keyboard type. Dit gedrag kan niet worden uitgeschakeld — het systeem beschouwt de prioriteit van content type als hoger dan de expliciete toetsenbordconfiguratie. Ontwikkelaars hoeven de instellingen van beide eigenschappen niet te dupliceren.
De typen .URL en .emailAddress voegen respectievelijk de knoppen .com en @ toe aan het toetsenbord. Het type .decimalPad met content type .creditCardNumber toont een numeriek toetsenbord met decimaal scheidingsteken, wat handig is voor het invoeren van bedragen en kaartnummers. Volgens Apple Human Interface Guidelines verwacht de gebruiker dat het toetsenbord overeenkomt met het type ingevoerde gegevens, niet andersom.
.oneTimeCode is een uitzondering — dit type verandert de toetsenbordindeling niet, maar activeert de QuickType-balk met codes uit SMS. De gebruiker ziet de code-suggestie boven het toetsenbord en kan deze met één tik invoegen. Het mechanisme werkt alleen voor velden die first responder worden na ontvangst van een SMS.
Automatisch aanvullen in iOS gebruikt Text Content Type om invoervelden te koppelen aan gegevens uit iCloud Keychain en ASCredentialProviderViewController. Het systeem analyseert alle velden op het scherm, bepaalt hun semantische typen en biedt de bijbehorende opgeslagen gegevens aan. Zonder correct opgegeven typen wordt automatisch aanvullen niet geactiveerd.
Voor het functioneren van automatisch aanvullen moeten drie voorwaarden worden vervuld. Ten eerste — het veld moet een correcte UITextContentType hebben. Ten tweede — het scherm moet ten minste twee velden met verschillende typen bevatten (bijv. .username en .password). Ten derde — de app moet Associated Domains ondersteunen met de entitlement webcredentials voor synchronisatie met de website.
De sleutelketen (Keychain) gebruikt content type voor de classificatie van opgeslagen records. Als een veld is gemarkeerd als .password, slaat het systeem de ingevoerde waarde op in iCloud Keychain en biedt deze aan bij de volgende aanmelding. Velden met het type .creditCardNumber worden automatisch opgeslagen in Wallet na bevestiging via Face ID.
Voor eenmalige codes van het type .oneTimeCode gebruikt iOS 17 een nieuw AutoFill OTP-mechanisme dat geen directe toegang tot SMS vereist. Het systeem onderschept codes uit berichten op het niveau van het besturingssysteem en geeft ze door aan de app via de QuickType-balk, zonder dat de app de inhoud van berichten hoeft te lezen.
De basisconfiguratie van Text Content Type in Swift gebeurt via de eigenschap textContentType in code of via Interface Builder. In code neemt het toewijzen van een constante één regel in beslag, en in IB wordt het gewenste type geselecteerd uit de keuzelijst in de attributeninspecteur.
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"
let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword
Voor het programmatisch maken van een inlogformulier met automatisch aanvullen gebruikt u beide velden met verschillende content types. Het systeem koppelt ze automatisch als gebruikersnaam en wachtwoord. Als de app biometrische aanmelding ondersteunt, voeg dan een veld met het type .username toe voor correcte herkenning van het account.
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
}
}
Voor een invoerveld voor een eenmalige code uit SMS geeft u het type .oneTimeCode op. Het systeem biedt de code automatisch aan in de QuickType-balk na ontvangst. De ontwikkelaar hoeft geen toestemming te vragen voor het lezen van SMS of een eigen berichtenparser te implementeren.
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"
Voor iOS 17+ ondersteunt het type .oneTimeCode automatisch invullen zonder focus op het veld. Als de gebruiker een SMS met de code ontvangt, biedt iOS deze aan op het vergrendelscherm, en na ontgrendeling wordt de code automatisch ingevoegd in het actieve veld met het juiste content type.
De juiste typekeuze heeft directe invloed op de conversie van het formulier en de gebruikerservaring. Apple raadt ten zeerste aan om het meest specifieke beschikbare type op te geven. Gebruik bijvoorbeeld voor een naamveld .givenName in plaats van het algemene .name — dit stelt het systeem in staat om automatisch aanvullen uit contacten met de juiste naam voor te stellen.
Vermijd de veelgemaakte fout — het instellen van .emailAddress voor een username-veld. Als de app e-mail als gebruikersnaam gebruikt, geef dan de typen .username op voor het inlogveld en .password voor het wachtwoordveld. Het type .emailAddress is uitsluitend bedoeld voor velden voor het invoeren van e-mail als contactgegeven, niet als identificatie.
Voor formulieren met meerdere velden van hetzelfde type (bijv. twee e-mailadressen) gebruikt u de eigenschap .textContentType voor elk veld, maar voegt u verschillende accessibilityIdentifier-id's toe. Dit helpt VoiceOver om de velden correct aan te kondigen, hoewel het systeem voor automatisch aanvullen dezelfde optie voor beide velden kan voorstellen.
Test automatisch aanvullen op een echt apparaat met een gevulde sleutelketen. De simulator ondersteunt iCloud Keychain niet volledig en het gedrag van automatisch aanvullen kan verschillen. Volgens Apple Developer Forums (2025) worden de meeste problemen met automatisch aanvullen veroorzaakt door een onjuist opgegeven content type.
Veelgestelde vragen
UITextContentType bepaalt het semantische gegevenstype, terwijl UIKeyboardType de toetsenbordindeling bepaalt. Content type kan keyboard type overschrijven voor optimale invoer.
Automatisch aanvullen wordt geactiveerd door de typen .username, .password, .newPassword, .emailAddress, .telephoneNumber en .creditCardNumber. Het systeem koppelt deze typen aan gegevens uit de sleutelketen.
Ja, WKWebView ondersteunt Text Content Type voor HTML-velden met het autocomplete-attribuut. iOS koppelt automatisch autocomplete-attributen aan UITextContentType-typen.
Ja, UITextView erft ook UITextInputTraits en ondersteunt de eigenschap textContentType. Dit is handig voor meerregelige invoervelden voor contactgegevens.
Het systeem kan onjuiste gegevens voorstellen voor automatisch aanvullen of helemaal niets voorstellen. Een username-veld met het type .emailAddress kan bijvoorbeeld een e-mail invullen in plaats van de gebruikersnaam.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook