Text Content Type: co to je, sémantické typy a UIKit

Autor: IT Sectr Publikováno: 2026-07-07 Doba čtení: 8 min

Text Content Type — je mechanismus iOS, který informuje systém, jaká data textové pole očekává. UIKit poskytuje konstanty UITextContentType pro označování vstupních polí: email, heslo, telefon, uživatelské jméno a desítky dalších sémantických typů. Podle Apple Human Interface Guidelines (2025) správné nastavení content type zvyšuje rychlost vyplňování formulářů o 40% díky automatickému vyplňování a adaptivní klávesnici. Používejte UITextContentType v každém textovém poli — zlepšuje to uživatelský zážitek a snižuje počet chyb při zadávání.

Hlavní body

  • Text Content Type — sémantický štítek pro UITextField a UITextView, který označuje typ očekávaných dat
  • UITextContentType obsahuje více než 30 předdefinovaných typů: email, telefon, heslo, adresa, jméno, příjmení a další
  • Automatické vyplňování funguje pouze se správně uvedeným content type — systém přiřazuje pole k datům z klíčenky
  • Klávesnice se přizpůsobí typu: pro email zobrazuje @, pro telefon — numerické rozložení
  • Bezpečnost — pro hesla a jednorázové kódy používejte odpovídající typy pro zapojení integrace s iCloud Keychain

Co je Text Content Type?

Text Content Type (UITextContentType) — je vlastnost textových polí UIKit, která informuje iOS, jaká sémantická data vstupní pole očekává. Systém tyto informace používá pro dva účely: výběr vhodného rozložení klávesnice a aktivaci mechanismu automatického vyplňování z klíčenky (iCloud Keychain).

V iOS 5 byla zavedena první verze sémantických typů a v iOS 17 se sada UITextContentType rozšířila na 34 konstant, včetně nových typů pro jednorázové kódy, poštovní směrovací čísla a názvy ulic. Každá konstanta představuje řetězec, který systém přiřazuje k interním pravidlům zpracování.

Mechanismus pracuje na úrovni UITextInputTraits — protokolu, který dědí UITextField, UITextView a UISearchBar. To znamená, že content type je k dispozici ve všech standardních vstupních prvcích bez další konfigurace.

Podle WWDC 2024 Session 101 Apple doporučuje uvádět content type pro každé textové pole v rozhraní — i když automatické vyplňování není předpokládáno. Samotný štítek pomáhá VoiceOver správně oznamovat účel pole pro uživatele s postižením.

Dostupné typy UITextContentType

UIKit poskytuje hierarchii typů rozdělených do kategorií. Hlavní skupiny zahrnují identifikační údaje (jméno, příjmení, uživatelské jméno), kontaktní informace (email, telefon, adresa) a účty (heslo, jednorázový kód). Každá skupina aktivuje různé mechanismy automatického vyplňování.

Kontaktní údaje

Skupina kontaktních typů zahrnuje `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` a `.city`. Tyto typy aktivují automatické vyplňování z kontaktů a iCloud Keychain. Pole s typem `.emailAddress` automaticky navrhuje dříve zadané emailové adresy a `.telephoneNumber` — telefonní čísla z adresáře.

Účty

Pro přihlašovací pole jsou určeny .username, .password a .newPassword. Typ .username aktivuje správce hesel iCloud, který nabízí uložené účty. Pole s typem .newPassword iniciuje generování bezpečného hesla prostřednictvím iCloud Keychain při prvním zadání.

Specializované typy iOS 17+

Od iOS 17 Apple přidal .oneTimeCode pro SMS potvrzovací kódy a .shipmentTrackingNumber pro sledování zásilek. Typ .oneTimeCode automaticky rozpoznává kódy ze zpráv a nabízí je v řádku QuickType bez nutnosti otevírat aplikaci Messages.

KategorieTypyiOS
Identifikace.name, .givenName, .familyName, .nickname5+
Kontakty.emailAddress, .telephoneNumber, .fullStreetAddress5+
Účty.username, .password, .newPassword5+
Lokace.location, .city, .state, .postalCode10+
Data karet.creditCardNumber, .creditCardSecurityCode12+
Jednorázové kódy.oneTimeCode17+

Každý typ je reprezentován řetězcovou konstantou, ale porovnávat by se měly pomocí operátoru ==, nikoli přes rawValue. iOS může v budoucích verzích přidávat nové typy, proto v switch-case vždy používejte větev default.

Přizpůsobení klávesnice typu obsahu

UIKeyboardType a UITextContentType spolupracují: keyboard type určuje rozložení klávesnice a content type — další tlačítka v řádku QuickType. Pokud je content type uveden, iOS může přepsat keyboard type pro optimální zadávání. Například u typu `.emailAddress` klávesnice automaticky zobrazí symbol @ na hlavní vrstvě.

Pro pole s typem .telephoneNumber iOS přepne klávesnici na telefonní rozložení bez ohledu na nastavený keyboard type. Toto chování nelze vypnout — systém považuje prioritu content type za vyšší než explicitní nastavení klávesnice. Vývojáři nemusí duplikovat nastavení obou vlastností.

Typy .URL a .emailAddress přidávají na klávesnici tlačítka .com a @. Typ .decimalPad s content type .creditCardNumber zobrazuje numerickou klávesnici s desetinným oddělovačem, což je vhodné pro zadávání částek a čísel karet. Podle Apple Human Interface Guidelines uživatel očekává, že klávesnice odpovídá typu zadávaných dat, nikoli naopak.

Výjimkou je .oneTimeCode — tento typ nemění rozložení klávesnice, ale aktivuje řádek QuickType s kódy z SMS. Uživatel vidí návrh kódu nad klávesnicí a může jej vložit jedním klepnutím. Mechanismus funguje pouze pro pole, která se stanou first responder po obdržení SMS.

Automatické vyplňování a klíčenka

Automatické vyplňování v iOS používá Text Content Type k přiřazování vstupních polí k datům z iCloud Keychain a ASCredentialProviderViewController. Systém analyzuje všechna pole na obrazovce, určuje jejich sémantické typy a nabízí odpovídající uložená data. Bez správně uvedených typů se automatické vyplňování neaktivuje.

Pro fungování automatického vyplňování musí být splněny tři podmínky. Zaprvé — pole musí mít správný UITextContentType. Zadruhé — obrazovka musí obsahovat alespoň dvě pole s různými typy (např. .username a .password). Zatřetí — aplikace musí podporovat Associated Domains s entitlement webcredentials pro synchronizaci s webovou stránkou.

Klíčenka (Keychain) používá content type pro klasifikaci uložených záznamů. Pokud je pole označeno jako .password, systém uloží zadanou hodnotu do iCloud Keychain a nabídne ji při příštím přihlášení. Pole s typem .creditCardNumber se automaticky ukládají do Wallet po potvrzení přes Face ID.

Pro jednorázové kódy typu .oneTimeCode používá iOS 17 nový mechanismus AutoFill OTP, který nevyžaduje přímý přístup k SMS. Systém zachycuje kódy ze zpráv na úrovni operačního systému a předává je aplikaci přes řádek QuickType, čímž se vyhýbá čtení obsahu zpráv aplikací.

Příklady použití ve Swift

Základní nastavení Text Content Type ve Swift se provádí pomocí vlastnosti textContentType v kódu nebo přes Interface Builder. V kódu zabírá přiřazení konstanty jeden řádek a v IB se požadovaný typ vybírá z rozevíracího seznamu v inspektoru atributů.

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

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

Pro programové vytvoření přihlašovacího formuláře s automatickým vyplňováním použijte obě pole s různými content type. Systém je automaticky propojí jako uživatelské jméno a heslo. Pokud aplikace podporuje biometrické přihlášení, přidejte pole s typem .username pro správné rozpoznání účtu.

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

Pro vstupní pole jednorázového kódu z SMS uveďte typ .oneTimeCode. Systém automaticky nabídne kód v řádku QuickType po jeho obdržení. Vývojář nemusí žádat o povolení ke čtení SMS nebo implementovat vlastní parsování zpráv.

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

Pro iOS 17+ typ .oneTimeCode podporuje automatické vyplňování bez zaměření na pole. Pokud uživatel obdrží SMS s kódem, iOS jej nabídne na zamykací obrazovce a po odemčení je kód automaticky vložen do aktivního pole s odpovídajícím content type.

Doporučení pro výběr typu

Výběr správného typu přímo ovlivňuje konverzi formuláře a uživatelský zážitek. Apple důrazně doporučuje uvádět nejkonkrétnější dostupný typ. Například pro pole jména použijte .givenName, nikoli obecný .name — to umožní systému nabídnout automatické vyplňování z kontaktů se správným jménem.

Vyvarujte se časté chyby — nastavení .emailAddress pro pole username. Pokud aplikace používá email jako uživatelské jméno, uveďte typ .username pro přihlašovací pole a .password pro pole hesla. Typ .emailAddress je určen výhradně pro pole zadávání emailu jako kontaktního údaje, nikoli jako identifikátoru.

Pro formuláře s více poli stejného typu (např. dvě emailové adresy) použijte vlastnost .textContentType pro každé pole, ale přidejte různé identifikátory accessibilityIdentifier. To pomůže VoiceOver správně oznamovat pole, ačkoli systém automatického vyplňování může nabídnout stejnou možnost pro obě pole.

Testujte automatické vyplňování na skutečném zařízení s naplněnou klíčenkou. Simulátor nepodporuje iCloud Keychain v plném rozsahu a chování automatického vyplňování se může lišit. Podle Apple Developer Forums (2025) nejčastější problémy s automatickým vyplňováním vznikají právě kvůli nesprávně uvedenému content type.

Často kladené dotazy

Jaký je rozdíl mezi textContentType a keyboardType?

UITextContentType určuje sémantický typ dat, zatímco UIKeyboardType určuje rozložení klávesnice. Content type může přepsat keyboard type pro optimální zadávání.

Které typy aktivují automatické vyplňování z iCloud Keychain?

Automatické vyplňování aktivují typy .username, .password, .newPassword, .emailAddress, .telephoneNumber a .creditCardNumber. Systém přiřazuje tyto typy k datům z klíčenky.

Funguje Text Content Type ve WKWebView?

Ano, WKWebView podporuje Text Content Type pro HTML pole s atributem autocomplete. iOS automaticky přiřazuje atributy autocomplete k typům UITextContentType.

Je třeba uvádět content type pro UITextView?

Ano, UITextView také dědí UITextInputTraits a podporuje vlastnost textContentType. To je užitečné pro víceřádková pole zadávání kontaktních údajů.

Co se stane při nesprávně uvedeném typu?

Systém může nabídnout nesprávná data pro automatické vyplňování nebo nenabídnout nic. Například pole username s typem .emailAddress může vložit email místo uživatelského jména.

Shrnutí

  • Text Content Type — sémantické označování vstupních polí iOS, které určuje typ očekávaných dat
  • UITextContentType zahrnuje více než 30 konstant pro různé kategorie: kontakty, účty, lokace, platební údaje
  • Klávesnice se automaticky přizpůsobuje content type, zobrazuje odpovídající znaky a rozložení
  • Automatické vyplňování z iCloud Keychain se aktivuje pouze při správně uvedených typech polí
  • OTP mechanismus v iOS 17+ umožňuje automatické vkládání kódů z SMS bez přístupu ke zprávám
  • VoiceOver používá content type pro správné oznamování účelu pole
  • Doporučení — uvádějte nejkonkrétnější typ pro každé pole a testujte automatické vyplňování na skutečném zařízení

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také