Text Content Type — egy iOS mechanizmus, amely tájékoztatja a rendszert, hogy egy szöveges mező milyen adatokat vár. A UIKit UITextContentType konstansokat biztosít a beviteli mezők jelölésére: e-mail, jelszó, telefon, felhasználónév és több tucat más szemantikus típus. Az Apple Human Interface Guidelines (2025) szerint a content type helyes beállítása 40%-kal növeli az űrlapok kitöltési sebességét az automatikus kitöltés és az adaptív billentyűzet révén. Használd a UITextContentType-ot minden szöveges mezőben — javítja a felhasználói élményt és csökkenti a beviteli hibák számát.
Főbb pontok
Text Content Type (UITextContentType) — a UIKit szöveges mezők tulajdonsága, amely tájékoztatja az iOS-t, hogy a beviteli mező milyen szemantikus adatokat vár. A rendszer ezt az információt két célra használja: a megfelelő billentyűzet-elrendezés kiválasztása és az automatikus kitöltés mechanizmusának aktiválása a kulcstartóból (iCloud Keychain).
Az iOS 5-ben vezették be a szemantikus típusok első verzióját, az iOS 17-ben pedig a UITextContentType készlet 34 konstansra bővült, beleértve az új típusokat egyszeri kódokhoz, irányítószámokhoz és utcanevekhez. Minden konstans egy karakterláncot képvisel, amelyet a rendszer a belső feldolgozási szabályokhoz illeszt.
A mechanizmus a UITextInputTraits szintjén működik — a protokollt, amelyet az UITextField, UITextView és UISearchBar örököl. Ez azt jelenti, hogy a content type minden szabványos beviteli elemben elérhető további konfiguráció nélkül.
A WWDC 2024 Session 101 szerint az Apple azt javasolja, hogy minden szöveges mezőhöz adj meg content type-ot a felületen — még akkor is, ha az automatikus kitöltés nem várható. Maga a címke segíti a VoiceOver-t, hogy helyesen jelentse be a mező célját a fogyatékkal élő felhasználók számára.
A UIKit a típusok hierarchiáját kínálja, kategóriákra bontva. A fő csoportok közé tartoznak az azonosító adatok (keresztnév, vezetéknév, felhasználónév), kapcsolattartási információk (e-mail, telefon, cím) és fiókok (jelszó, egyszeri kód). Minden csoport különböző automatikus kitöltési mechanizmusokat aktivál.
A kapcsolattartási típusok csoportja tartalmazza a `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` és `.city` elemeket. Ezek a típusok aktiválják az automatikus kitöltést a névjegyzékből és az iCloud Keychain-ből. A `.emailAddress` típusú mező automatikusan javasolja a korábban megadott e-mail címeket, a `.telephoneNumber` pedig — a címjegyzék telefonszámait.
A bejelentkezési mezőkhöz a .username, .password és .newPassword típusok vannak. A .username típus aktiválja az iCloud jelszókezelőjét, amely a mentett fiókokat kínálja. A .newPassword típusú mező az első bevitelkor biztonságos jelszó generálását kezdeményezi az iCloud Keychain segítségével.
Az iOS 17-től kezdve az Apple hozzáadta a .oneTimeCode-ot SMS megerősítő kódokhoz és a .shipmentTrackingNumber-t a küldemények nyomon követéséhez. A .oneTimeCode típus automatikusan felismeri a kódokat az üzenetekből, és a QuickType sávban kínálja őket anélkül, hogy meg kellene nyitni a Messages alkalmazást.
| Kategória | Típusok | iOS |
|---|---|---|
| Azonosítás | .name, .givenName, .familyName, .nickname | 5+ |
| Kapcsolatok | .emailAddress, .telephoneNumber, .fullStreetAddress | 5+ |
| Fiókok | .username, .password, .newPassword | 5+ |
| Hely | .location, .city, .state, .postalCode | 10+ |
| Kártyaadatok | .creditCardNumber, .creditCardSecurityCode | 12+ |
| Egyszeri kódok | .oneTimeCode | 17+ |
Minden típust egy karakterlánc konstans képvisel, de az összehasonlítást a == operátoron keresztül kell végezni, nem a rawValue segítségével. Az iOS új típusokat adhat hozzá a jövőbeli verziókban, ezért a switch-case-ben mindig használd a default ágat.
UIKeyboardType és UITextContentType együtt dolgoznak: a keyboard type meghatározza a billentyűzet elrendezését, a content type pedig — a további gombokat a QuickType sávban. Ha a content type meg van adva, az iOS felülbírálhatja a keyboard type-ot az optimális bevitel érdekében. Például a `.emailAddress` típusnál a billentyűzet automatikusan megjeleníti a @ szimbólumot a fő rétegen.
A .telephoneNumber típusú mező esetén az iOS a beállított keyboard type-tól függetlenül telefonos elrendezésre kapcsolja a billentyűzetet. Ez a viselkedés nem kapcsolható ki — a rendszer a content type prioritását magasabbnak tekinti az explicit billentyűzetkonfigurációnál. A fejlesztőknek nem kell megkettőzniük mindkét tulajdonság beállítását.
A .URL és .emailAddress típusok rendre .com és @ gombokat adnak a billentyűzethez. A .decimalPad típus .creditCardNumber content type-tal numerikus billentyűzetet jelenít meg tizedes elválasztóval, ami kényelmes összegek és kártyaszámok beviteléhez. Az Apple Human Interface Guidelines szerint a felhasználó elvárja, hogy a billentyűzet megfeleljen a bevitt adatok típusának, nem pedig fordítva.
Kivétel a .oneTimeCode — ez a típus nem változtatja meg a billentyűzet elrendezését, de aktiválja a QuickType sávot SMS-ből származó kódokkal. A felhasználó látja a kódjavaslatot a billentyűzet felett, és egy érintéssel beillesztheti. A mechanizmus csak azoknál a mezőknél működik, amelyek SMS fogadása után first responder-ré válnak.
Automatikus kitöltés az iOS-ben a Text Content Type-t használja a beviteli mezők és az iCloud Keychain és ASCredentialProviderViewController adatainak összeillesztésére. A rendszer elemzi a képernyő összes mezőjét, meghatározza azok szemantikus típusát és felkínálja a megfelelő mentett adatokat. Helyesen megadott típusok nélkül az automatikus kitöltés nem aktiválódik.
Az automatikus kitöltés működéséhez három feltételnek kell teljesülnie. Első — a mezőnek helyes UITextContentType-tal kell rendelkeznie. Második — a képernyőnek legalább két mezőt kell tartalmaznia különböző típusokkal (pl. .username és .password). Harmadik — az alkalmazásnak támogatnia kell az Associated Domains-t webcredentials entitlement-tel a weboldallal való szinkronizáláshoz.
A kulcstartó (Keychain) a content type segítségével osztályozza a mentett rekordokat. Ha egy mező .password-ként van megjelölve, a rendszer elmenti a bevitt értéket az iCloud Keychain-be, és a következő bejelentkezéskor felkínálja. A .creditCardNumber típusú mezők automatikusan elmentődnek a Wallet-be a Face ID-n keresztüli megerősítés után.
A .oneTimeCode típusú egyszeri kódokhoz az iOS 17 egy új AutoFill OTP mechanizmust használ, amely nem igényel közvetlen hozzáférést az SMS-hez. A rendszer elkülöníti a kódokat az üzenetekből az operációs rendszer szintjén, és továbbítja az alkalmazásnak a QuickType sávon keresztül, elkerülve az üzenetek tartalmának alkalmazás általi olvasását.
A Text Content Type alapvető beállítása Swift-ben a kódban a textContentType tulajdonságon keresztül vagy az Interface Builder segítségével történik. A kódban a konstans hozzárendelése egy sort vesz igénybe, az IB-ben pedig a kívánt típust a legördülő listából lehet kiválasztani az attribútum-inspektorban.
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"
let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword
A bejelentkezési űrlap programozott létrehozásához automatikus kitöltéssel használj mindkét mezőt különböző content type-okkal. A rendszer automatikusan összekapcsolja őket felhasználónévként és jelszóként. Ha az alkalmazás támogatja a biometrikus bejelentkezést, adj hozzá egy .username típusú mezőt a fiók helyes felismeréséhez.
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
}
}
Az SMS-ből származó egyszeri kód beviteli mezőjéhez add meg a .oneTimeCode típust. A rendszer automatikusan felkínálja a kódot a QuickType sávban annak megérkezése után. A fejlesztőnek nem kell engedélyt kérnie az SMS olvasásához vagy saját üzenetfeldolgozót implementálnia.
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"
iOS 17+ esetén a .oneTimeCode típus támogatja az automatikus kitöltést a mező fókusza nélkül. Ha a felhasználó SMS-t kap a kóddal, az iOS felkínálja azt a zárolási képernyőn, és feloldás után a kód automatikusan beillesztésre kerül a megfelelő content type-tal rendelkező aktív mezőbe.
A helyes típus kiválasztása közvetlenül befolyásolja az űrlap konverzióját és a felhasználói élményt. Az Apple határozottan javasolja a legkonkrétabb elérhető típus megadását. Például a név mezőhöz használd a .givenName-t, ne az általános .name-t — ez lehetővé teszi a rendszer számára, hogy a névjegyzékből a helyes névvel ajánljon automatikus kitöltést.
Kerüld a gyakori hibát — az .emailAddress beállítását a username mezőhöz. Ha az alkalmazás e-mailt használ felhasználónévként, add meg a .username típust a bejelentkezési mezőhöz és a .password-t a jelszó mezőhöz. Az .emailAddress típus kizárólag az e-mail kapcsolattartási adatként történő bevitelére szolgáló mezőkhöz készült, nem azonosítóként.
Az azonos típusú több mezőt tartalmazó űrlapokhoz (pl. két e-mail cím) használd a .textContentType tulajdonságot minden mezőhöz, de adj hozzá különböző accessibilityIdentifier azonosítókat. Ez segíti a VoiceOver-t a mezők helyes bejelentésében, bár az automatikus kitöltő rendszer ugyanazt a lehetőséget ajánlhatja mindkét mezőhöz.
Teszteld az automatikus kitöltést valódi eszközön feltöltött kulcstartóval. A szimulátor nem támogatja teljes mértékben az iCloud Keychain-t, és az automatikus kitöltés viselkedése eltérhet. Az Apple Developer Forums (2025) szerint az automatikus kitöltéssel kapcsolatos leggyakoribb problémák pontosan a helytelenül megadott content type miatt merülnek fel.
Gyakran Ismételt Kérdések
UITextContentType határozza meg az adatok szemantikus típusát, míg az UIKeyboardType a billentyűzet elrendezését. A content type felülbírálhatja a keyboard type-ot az optimális bevitel érdekében.
Az automatikus kitöltést a .username, .password, .newPassword, .emailAddress, .telephoneNumber és .creditCardNumber típusok aktiválják. A rendszer ezeket a típusokat a kulcstartó adataihoz illeszti.
Igen, a WKWebView támogatja a Text Content Type-t az autocomplete attribútummal rendelkező HTML mezőkhöz. Az iOS automatikusan hozzáilleszti az autocomplete attribútumokat az UITextContentType típusokhoz.
Igen, a UITextView is örökli az UITextInputTraits-t és támogatja a textContentType tulajdonságot. Ez hasznos a kapcsolattartási adatok többsoros beviteli mezőinél.
A rendszer helytelen adatokat javasolhat az automatikus kitöltéshez, vagy semmit sem javasol. Például egy .emailAddress típusú username mező e-mailt írhat be a felhasználónév helyett.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is