Autocapitalization: co to je, typy a UITextAutocapitalizationType

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

Autocapitalization je mechanismus iOS, který automaticky převádí první písmeno zadaného textu na velké v určitých kontextech. UIKit poskytuje vlastnost autocapitalizationType v protokolu UITextInputTraits se čtyřmi režimy: none, words, sentences a allCharacters. Podle Apple Text Programming Guide (2025) správné nastavení automatické kapitalizace zlepšuje uživatelský zážitek a snižuje počet ručních oprav při zadávání. Použijte režim sentences pro většinu textových polí a none pro uživatelská jména a hesla.

Hlavní body

  • Autocapitalization — automatické převádění prvního písmene na velké ve vstupních polích UIKit
  • UITextAutocapitalizationType zahrnuje čtyři režimy: none, words, sentences a allCharacters
  • Režim sentences — nejběžnější, dělá první písmeno každé věty velkým
  • Režim words — dělá první písmeno každého slova velkým, vhodné pro pole jména a příjmení
  • Režim none — povinný pro pole hesel, e-mailů, vyhledávání a potvrzovacích kódů

Co je Autocapitalization?

Autocapitalization (automatická kapitalizace) je funkce operačního systému iOS, která automaticky převádí první znak textu na velké písmeno při splnění určitých podmínek. Mechanismus je řízen pomocí vlastnosti autocapitalizationType, dostupné pro všechny prvky implementující protokol UITextInputTraits: UITextField, UITextView a UISearchBar.

Funkce pracuje na úrovni textového enginu iOS a aktivuje se v okamžiku zadávání každého znaku. Systém analyzuje pozici kurzoru a okolní text, aby určil, zda má aktuálně zadávaný znak převést na velký. Pokud je podmínka splněna, iOS automaticky nahradí malé písmeno velkým dříve, než se zobrazí v poli.

Podle Apple Human Interface Guidelines (2025) je automatická kapitalizace součástí širšího systému prediktivního zadávání, který zahrnuje také automatickou opravu a prediktivní psaní textu. Uživatel může všechny tyto funkce globálně vypnout v nastavení systému (Nastavení > Obecné > Klávesnice), ale vývojář je také spravuje na úrovni konkrétních polí.

Na rozdíl od automatické opravy nepoužívá automatická kapitalizace jazykový model — funguje podle jednoduchých pravidel: po tečce a mezeře, na začátku textu, po znaku nového řádku. Výjimkou je režim words, kde se první písmeno každého slova stává velkým bez ohledu na kontext.

Režimy automatické kapitalizace

UITextAutocapitalizationType je výčet čtyř hodnot definujících strategii automatického převodu velikosti písmen. Každý režim je určen pro konkrétní typ textových polí a řeší specifický úkol uživatelského zážitku.

None — bez automatické kapitalizace

Režim .none zcela vypíná automatický převod velikosti písmen. Všechny znaky jsou zadávány v té velikosti, v jaké je uživatel píše. Tento režim je povinný pro pole hesel, e-mailových adres, přezdívek, vyhledávacích dotazů a všech polí, kde na velikosti písmen záleží při zpracování dat na serveru.

Words — každé slovo s velkým písmenem

Režim .words dělá první písmeno každého zadaného slova velkým. Systém určuje hranici slova podle mezery a převádí první znak po mezeře na velký. Režim je vhodný pro pole pro zadání jména, příjmení, názvů měst, ulic a dalších polí, kde každé slovo má začínat velkým písmenem.

Sentences — začátek věty

Režim .sentences — nejběžnější a standardně používaný pro většinu textových polí. Systém dělá velkým první písmeno po tečce, vykřičníku nebo otazníku, za kterým následuje mezera. Režim je ideální pro pole pro zadávání poznámek, zpráv, komentářů a dalších víceřádkových textů.

All Characters — vše velké

Režim .allCharacters převádí všechny zadané znaky na velké. Tento režim je ekvivalentem neustálého držení Caps Lock a používá se pro pole, kde data mají být velkými písmeny: poštovní směrovací čísla, kódy zemí, zkratky, čísla objednávek. Měl by být používán s opatrností, protože text psaný velkými písmeny je hůře čitelný.

RežimPopisPříklad vstupuDoporučení
.noneBez změnjohn@mail.comE-mail, hesla, hledání
.wordsKaždé slovoJan NovákJméno, adresa, město
.sentencesZačátek větyAhoj. Jak se máš?Zprávy, poznámky
.allCharactersVše velkéABC-123Kódy, indexy

Jak funguje automatické velké písmeno

Mechanismus automatické kapitalizace se aktivuje ve fázi zpracování stisku klávesy, před zobrazením znaku na obrazovce. Když uživatel stiskne klávesu, UITextInputTraits zkontroluje aktuální pozici kurzoru a použije pravidlo převodu velikosti písmen podle nastaveného autocapitalizationType.

Pro režim .sentences systém sleduje spouštěcí znaky: tečku (.), vykřičník (!), otazník (?) a znak nového řádku ( ) pokud je režim zapnutý. Po detekci spouštěcího znaku a následující mezery systém nastaví příznak „očekávání velkého písmena" pro další zadávaný znak.

Režim .words sleduje znak mezery jako spouštěč. Po každé mezeře systém očekává velké písmeno pro další slovo. Existují však výjimky: po pomlčce, apostrofu a dalších interpunkčních znaméncích uvnitř slova se velké písmeno nevkládá. Například „O'Brien" zůstane správně.

Důležitá vlastnost — automatická kapitalizace funguje pouze pro první znak slova. Pokud uživatel zadá slovo obsahující velká písmena uprostřed (například iPhone nebo macOS), systém je nemění, protože převod se aplikuje pouze na první znak po spouštěči. To znamená, že názvy značek a produktů s nestandardní velikostí písmen nebudou poškozeny.

Kdy vypnout automatickou kapitalizaci

Automatickou kapitalizaci je třeba vypnout v polích, kde na velikosti písmen záleží pro správné zpracování dat. Hlavní případy: pole pro zadávání e-mailových adres, uživatelských jmen, hesel, vyhledávacích dotazů, URL adres, potvrzovacích kódů, IMEI a sériových čísel. Ve všech těchto případech povede automatická změna velikosti písmen k chybám při zpracování na serveru.

Pro vyhledávací lišty (UISearchBar) je automatická kapitalizace standardně vypnuta, což odpovídá očekávání uživatelů. Vyhledávací dotaz může být zadán v jakékoli velikosti písmen a server jej obvykle sám převede na malá písmena. Pokud zapnete automatickou kapitalizaci pro vyhledávání, uživatel bude muset pokaždé ručně opravovat velké písmeno na začátku dotazu.

V registračních formulářích by pole username nebo nickname mělo mít režim .none, protože mnoho systémů rozlišuje velikost písmen u uživatelských jmen. Pole e-mail by také mělo být bez automatické kapitalizace — i když doménová jména nerozlišují velikost písmen, lokální část e-mailu teoreticky může, i když se to v praxi vyskytuje zřídka.

Podle Apple Developer Documentation pole s secureTextEntry (hesla) automaticky dědí autocapitalizationType = .none, i když vývojář explicitně nastaví jinou hodnotu. Systém má nejvyšší prioritu pro zabezpečený vstup a ignoruje všechny pokusy o zapnutí automatické kapitalizace pro pole hesla.

Příklady nastavení ve Swift

Nastavení automatické kapitalizace ve Swift se provádí pomocí vlastnosti autocapitalizationType. Vlastnost je dostupná pro UITextField, UITextView a UISearchBar. Hodnotu lze nastavit jak v kódu, tak přes Interface Builder v inspektoru atributů, kde se režim nazývá Capitalization.

swift
let nameField = UITextField()
nameField.autocapitalizationType = .words

let emailField = UITextField()
emailField.autocapitalizationType = .none

Pro kontaktní formulář nastavte každé pole podle jeho sémantiky: jméno — .words, e-mail — .none, zpráva — .sentences. Tato kombinace zajišťuje nejlepší uživatelský zážitek a minimalizuje potřebu ruční opravy velikosti písmen.

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

Pro programovou změnu režimu za běhu použijte delegáta UITextFieldDelegate. Pokud například pole může být použito v různých kontextech, změňte autocapitalizationType v metodě textFieldDidBeginEditing v závislosti na aktuálním režimu formuláře.

swift
func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField === codeField {
        textField.autocapitalizationType = .allCharacters
    }
}

Lokalizace a automatická kapitalizace

Automatická kapitalizace závisí na jazyku zadání nastaveném na klávesnici uživatele. Pro různé jazyky se pravidla převodu velikosti písmen mohou lišit. Například v turečtině se písmeno „i" ve velkém stává „İ" (s tečkou) a „I" v malém se stává „ı" (bez tečky). iOS tyto zvláštnosti zohledňuje automaticky.

Pro češtinu funguje automatická kapitalizace podle stejných pravidel jako pro angličtinu: velké písmeno po tečce, na začátku věty a po novém řádku.

Pro čínštinu, japonštinu a korejštinu se automatická kapitalizace nepoužívá, protože tyto jazyky nemají koncept velikosti písmen. Režim autocapitalizationType je systémem ignorován při použití odpovídajících klávesnic a pole se chová stejně jako v režimu .none bez ohledu na nastavenou hodnotu.

Pro arabštinu a hebrejštinu se automatická kapitalizace také nepoužívá, protože tyto jazyky používají vlastní systém psaní bez rozdělení na malá a velká písmena. Systém iOS správně určuje jazyk zadání a ignoruje nastavení automatické kapitalizace pro jazyky, kde tento koncept neexistuje.

Často kladené otázky

Lze změnit režim automatické kapitalizace dynamicky?

Ano, vlastnost autocapitalizationType lze změnit kdykoli, i když je pole již aktivní. Změna se projeví při příštím zadání znaku.

Vypíná secureTextEntry automatickou kapitalizaci?

Ano, pro pole s isSecureTextEntry = true systém automaticky nastaví autocapitalizationType = .none. Toto chování nelze programově změnit.

Funguje automatická kapitalizace pro UITextView?

Ano, UITextView plně podporuje autocapitalizationType. To je užitečné zejména pro víceřádková pole, kde režim .sentences funguje nejpřirozeněji.

Jak automatická kapitalizace ovlivňuje heslo?

Pokud pole není označeno jako secureTextEntry, ale používá se pro zadávání hesla, automatická kapitalizace může změnit heslo. Vždy ji vypněte pro pole, kde na velikosti písmen záleží.

Je rozdíl mezi simulátorem a zařízením?

Na simulátoru automatická kapitalizace funguje přes hardwarovou klávesnici Macu a může se chovat jinak. Testujte na reálném zařízení pro správné chování.

Shrnutí

  • Autocapitalization — funkce automatického převodu prvního znaku na velký ve vstupních polích iOS
  • Čtyři režimy UITextAutocapitalizationType: none, words, sentences, allCharacters
  • Režim .sentences je vhodný pro většinu polí, aktivuje se po tečce, !, ? a novém řádku
  • Režim .none je povinný pro e-mail, hesla, vyhledávání a pole citlivá na velikost písmen
  • Režim .words je optimální pro pole jména, příjmení, města a adresy
  • Lokalizace — pro turečtinu platí zvláštní pravidlo pro písmeno İ/ı
  • Doporučení — nastavujte automatickou kapitalizaci pro každé pole podle jeho sémantiky

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é