Autocapitalization is een iOS-mechanisme dat automatisch de eerste letter van ingevoerde tekst in bepaalde contexten omzet in een hoofdletter. UIKit biedt de eigenschap autocapitalizationType in het protocol UITextInputTraits met vier modi: none, words, sentences en allCharacters. Volgens de Apple Text Programming Guide (2025) verbetert de juiste configuratie van autocapitalisatie de gebruikerservaring en vermindert het aantal handmatige correcties bij het invoeren. Gebruik de modus sentences voor de meeste tekstvelden en none voor gebruikersnamen en wachtwoorden.
Belangrijkste punten
Autocapitalization (autocapitalisatie) is een functie van het besturingssysteem iOS die automatisch het eerste teken van tekst omzet in een hoofdletter wanneer aan bepaalde voorwaarden is voldaan. Het mechanisme wordt beheerd via de eigenschap autocapitalizationType, beschikbaar voor alle elementen die het protocol UITextInputTraits implementeren: UITextField, UITextView en UISearchBar.
De functie werkt op het niveau van de iOS-tekstengine en wordt geactiveerd op het moment van invoer van elk teken. Het systeem analyseert de cursorpositie en de omringende tekst om te bepalen of het huidige ingevoerde teken moet worden omgezet in een hoofdletter. Als aan de voorwaarde wordt voldaan, vervangt iOS automatisch de kleine letter door een hoofdletter voordat deze in het veld wordt weergegeven.
Volgens de Apple Human Interface Guidelines (2025) maakt autocapitalisatie deel uit van een breder systeem van voorspellende invoer, dat ook autocorrectie en voorspellende tekstinvoer omvat. De gebruiker kan al deze functies globaal uitschakelen in de systeeminstellingen (Instellingen > Algemeen > Toetsenbord), maar de ontwikkelaar beheert ze ook op het niveau van specifieke velden.
In tegenstelling tot autocorrectie gebruikt autocapitalisatie geen taalmodel — het werkt volgens eenvoudige regels: na een punt en spatie, aan het begin van de tekst, na een nieuweregelteken. Een uitzondering is de modus words, waarbij de eerste letter van elk woord hoofdletter wordt, ongeacht de context.
UITextAutocapitalizationType is een opsomming van vier waarden die de strategie voor automatische hoofdletteromzetting definiëren. Elke modus is bedoeld voor een specifiek type tekstveld en lost een concrete gebruikerservaringstaak op.
De modus .none schakelt de automatische hoofdletteromzetting volledig uit. Alle tekens worden ingevoerd in het register waarin de gebruiker ze typt. Deze modus is verplicht voor wachtwoordvelden, e-mailadressen, bijnamen, zoekopdrachten en alle velden waar het register van belang is voor de gegevensverwerking op de server.
De modus .words maakt de eerste letter van elk ingevoerd woord hoofdletter. Het systeem bepaalt de woordgrens na een spatie en zet het eerste teken na de spatie om in een hoofdletter. De modus is handig voor invoervelden voor naam, achternaam, stadsnamen, straatnamen en andere velden waar elk woord met een hoofdletter moet beginnen.
De modus .sentences — de meest voorkomende en standaard gebruikt voor de meeste tekstvelden. Het systeem maakt de eerste letter na een punt, uitroepteken of vraagteken, gevolgd door een spatie, hoofdletter. De modus is ideaal voor invoervelden voor notities, berichten, opmerkingen en andere meerregelige teksten.
De modus .allCharacters zet alle ingevoerde tekens om in hoofdletters. Deze modus is gelijk aan het constant ingedrukt houden van Caps Lock en wordt gebruikt voor velden waar gegevens in hoofdletters moeten staan: postcodes, landcodes, afkortingen, bestelnummers. Gebruik deze modus met voorzichtigheid, omdat tekst in hoofdletters moeilijker leesbaar is.
| Modus | Beschrijving | Invoervoorbeeld | Aanbeveling |
|---|---|---|---|
| .none | Geen wijzigingen | john@mail.com | E-mail, wachtwoorden, zoeken |
| .words | Elk woord | Jan Jansen | Naam, adres, stad |
| .sentences | Begin van zin | Hallo. Hoe gaat het? | Berichten, notities |
| .allCharacters | Alle hoofdletters | ABC-123 | Codes, indices |
Het autocapitalisatiemechanisme wordt geactiveerd in de verwerkingsfase van de toetsaanslag, voordat het teken op het scherm wordt weergegeven. Wanneer de gebruiker een toets indrukt, controleert UITextInputTraits de huidige cursorpositie en past de hoofdletteromzettingsregel toe volgens de ingestelde autocapitalizationType.
Voor de modus .sentences houdt het systeem trigger-tekens bij: punt (.), uitroepteken (!), vraagteken (?) en het nieuwe-regelkarakter ( ) wanneer de modus is ingeschakeld. Na detectie van het trigger-teken en de volgende spatie stelt het systeem een vlag „verwacht hoofdletter" in voor het volgende ingevoerde teken.
De modus .words houdt de spatie bij als trigger. Na elke spatie verwacht het systeem een hoofdletter voor het volgende woord. Er zijn echter uitzonderingen: na een koppelteken, apostrof en andere leestekens binnen een woord wordt geen hoofdletter ingevoegd. Bijvoorbeeld „O'Brien" blijft correct.
Een belangrijke eigenschap — autocapitalisatie werkt alleen voor het eerste teken van een woord. Als de gebruiker een woord invoert dat hoofdletters in het midden bevat (bijvoorbeeld iPhone of macOS), verandert het systeem deze niet, omdat de omzetting alleen wordt toegepast op het eerste teken na de trigger. Dit betekent dat merk- en productnamen met een niet-standaard register niet worden beschadigd.
Autocapitalisatie moet worden uitgeschakeld in velden waar het register van tekens van belang is voor de juiste gegevensverwerking. De belangrijkste gevallen: invoervelden voor e-mailadressen, gebruikersnamen, wachtwoorden, zoekopdrachten, URL's, bevestigingscodes, IMEI en serienummers. In al deze gevallen leidt automatische registerwijziging tot fouten bij de verwerking op de server.
Voor zoekbalken (UISearchBar) is autocapitalisatie standaard uitgeschakeld, wat overeenkomt met de verwachtingen van gebruikers. Een zoekopdracht kan in elk register worden ingevoerd en de server zet deze meestal zelf om naar kleine letters. Als u autocapitalisatie inschakelt voor zoeken, moet de gebruiker elke keer handmatig de hoofdletter aan het begin van de query corrigeren.
In registratieformulieren moet het veld username of nickname de modus .none hebben, omdat veel systemen hoofdlettergevoelig zijn voor gebruikersnamen. Het e-mailveld moet ook zonder autocapitalisatie zijn — hoewel domeinnamen niet hoofdlettergevoelig zijn, kan het lokale deel van de e-mail theoretisch hoofdlettergevoelig zijn, hoewel dit in de praktijk zelden voorkomt.
Volgens de Apple Developer Documentation erven velden met secureTextEntry (wachtwoorden) automatisch autocapitalizationType = .none, zelfs als de ontwikkelaar expliciet een andere waarde heeft ingesteld. Het systeem heeft de hoogste prioriteit voor beveiligde invoer en negeert alle pogingen om autocapitalisatie in te schakelen voor een wachtwoordveld.
Het configureren van autocapitalisatie in Swift gebeurt via de eigenschap autocapitalizationType. De eigenschap is beschikbaar voor UITextField, UITextView en UISearchBar. De waarde kan zowel in code als via Interface Builder in de attributeninspector worden ingesteld, waar de modus Capitalization wordt genoemd.
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
Voor een contactformulier stelt u elk veld in volgens zijn semantiek: naam — .words, e-mail — .none, bericht — .sentences. Deze combinatie zorgt voor de beste gebruikerservaring en minimaliseert de noodzaak voor handmatige registercorrectie.
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
}
}
Voor programmatische wijziging van de modus tijdens runtime gebruikt u de delegate UITextFieldDelegate. Als een veld bijvoorbeeld in verschillende contexten kan worden gebruikt, wijzigt u autocapitalizationType in de methode textFieldDidBeginEditing afhankelijk van de huidige werkingsmodus van het formulier.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
Autocapitalisatie is afhankelijk van de invoertaal die op het toetsenbord van de gebruiker is ingesteld. Voor verschillende talen kunnen de regels voor hoofdletteromzetting verschillen. In het Turks wordt de letter „i" in hoofdletter bijvoorbeeld „İ" (met punt) en „I" in kleine letter wordt „ı" (zonder punt). iOS houdt automatisch rekening met deze bijzonderheden.
Voor het Nederlands werkt autocapitalisatie volgens dezelfde regels als voor het Engels: een hoofdletter na een punt, aan het begin van een zin en na een nieuwe regel.
Voor Chinees, Japans en Koreaans wordt autocapitalisatie niet toegepast, omdat deze talen geen concept van hoofdletters kennen. De modus autocapitalizationType wordt door het systeem genegeerd bij gebruik van de bijbehorende toetsenborden en het veld gedraagt zich hetzelfde als in de modus .none, ongeacht de ingestelde waarde.
Voor het Arabisch en Hebreeuws wordt autocapitalisatie ook niet toegepast, omdat deze talen hun eigen schrijfsysteem gebruiken zonder onderscheid tussen kleine en hoofdletters. Het iOS-systeem bepaalt correct de invoertaal en negeert de autocapitalisatie-instellingen voor talen waar dit concept niet bestaat.
Veelgestelde vragen
Ja, de eigenschap autocapitalizationType kan op elk moment worden gewijzigd, zelfs wanneer het veld al actief is. De wijziging wordt van kracht bij de volgende tekeningave.
Ja, voor velden met isSecureTextEntry = true stelt het systeem automatisch autocapitalizationType = .none in. Het is niet mogelijk om dit gedrag programmatisch te wijzigen.
Ja, UITextView ondersteunt volledig autocapitalizationType. Dit is vooral handig voor meerregelige velden, waar de modus .sentences het meest natuurlijk werkt.
Als het veld niet is gemarkeerd als secureTextEntry maar wordt gebruikt voor wachtwoordinvoer, kan autocapitalisatie het wachtwoord wijzigen. Schakel het altijd uit voor velden waar het register van belang is.
Op de simulator werkt autocapitalisatie via het hardwaretoetsenbord van de Mac en kan het zich anders gedragen. Test op een echt apparaat voor correct gedrag.
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