Text Content Type: mi ez, szemantikus típusok és UIKit

Szerző: IT Sectr Megjelenés: 2026-07-07 Olvasási idő: 8 perc

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 — szemantikus címke UITextField és UITextView számára, amely jelzi a várt adatok típusát
  • UITextContentType több mint 30 előre meghatározott típust tartalmaz: e-mail, telefon, jelszó, cím, keresztnév, vezetéknév és mások
  • Automatikus kitöltés csak helyesen megadott content type esetén működik — a rendszer hozzáilleszti a mezőt a kulcstartó adataihoz
  • Billentyűzet alkalmazkodik a típushoz: e-mail esetén @-t jelenít meg, telefon esetén — numerikus elrendezést
  • Biztonság — jelszavak és egyszeri kódok esetén használd a megfelelő típusokat az iCloud Keychain integráció engedélyezéséhez

Mi az a Text Content Type?

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.

Elérhető UITextContentType típusok

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.

Kapcsolattartási adatok

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.

Fiókok

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.

Speciális típusok iOS 17+

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óriaTípusokiOS
Azonosítás.name, .givenName, .familyName, .nickname5+
Kapcsolatok.emailAddress, .telephoneNumber, .fullStreetAddress5+
Fiókok.username, .password, .newPassword5+
Hely.location, .city, .state, .postalCode10+
Kártyaadatok.creditCardNumber, .creditCardSecurityCode12+
Egyszeri kódok.oneTimeCode17+

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.

Billentyűzet alkalmazkodása a tartalom típusához

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 és kulcstartó

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.

Használati példák Swift-ben

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.

swift
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.

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

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.

swift
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.

Javaslatok a típus kiválasztásához

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

Mi a különbség a textContentType és a keyboardType között?

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.

Milyen típusok aktiválják az automatikus kitöltést az iCloud Keychain-ből?

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.

Működik a Text Content Type WKWebView-ben?

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.

Meg kell adni a content type-ot UITextView-hoz?

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.

Mi történik, ha a típus helytelenül van megadva?

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

  • Text Content Type — az iOS beviteli mezők szemantikus jelölése, amely meghatározza a várt adatok típusát
  • UITextContentType több mint 30 konstansot tartalmaz különböző kategóriákhoz: kapcsolatok, fiókok, hely, fizetési adatok
  • Billentyűzet automatikusan alkalmazkodik a content type-hoz, megjelenítve a megfelelő karaktereket és elrendezést
  • Automatikus kitöltés az iCloud Keychain-ből csak helyesen megadott mezőtípusok esetén aktiválódik
  • OTP mechanizmus iOS 17+-ban lehetővé teszi a kódok automatikus beillesztését SMS-ből az üzenetekhez való hozzáférés nélkül
  • VoiceOver a content type-ot használja a mező céljának helyes bejelentéséhez
  • Javaslat — add meg a legkonkrétabb típust minden mezőhöz, és teszteld az automatikus kitöltést valódi eszközön

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.

Projekt megbeszélése

Olvassa el is