Autocapitalization је механизам iOS-а који аутоматски претвара прво слово унетог текста у велико у одређеним контекстима. UIKit пружа својство autocapitalizationType у протоколу UITextInputTraits са четири режима: none, words, sentences и allCharacters. Према Apple Text Programming Guide (2025), правилно подешавање аутоматске капитализације побољшава корисничко искуство и смањује број ручних исправки при уносу. Користите режим sentences за већину текстуалних поља и none за корисничка имена и лозинке.
Главно
Autocapitalization (аутоматска капитализација) је функција оперативног система iOS која аутоматски претвара први знак текста у велико слово када се испуне одређени услови. Механизмом се управља преко својства autocapitalizationType, доступног за све елементе који имплементирају протокол UITextInputTraits: UITextField, UITextView и UISearchBar.
Функција ради на нивоу текстуалног погона iOS-а и активира се у тренутку уноса сваког знака. Систем анализира позицију курсора и околни текст да би утврдио да ли треба да претвори тренутни унети знак у велики. Ако се услов испуни, iOS аутоматски замењује мало слово великим пре него што се прикаже у пољу.
Према Apple Human Interface Guidelines (2025), аутоматска капитализација је део ширег система предиктивног уноса, који такође укључује аутоматску корекцију и предиктивни унос текста. Корисник може искључити све ове функције глобално у подешавањима система (Подешавања > Опште > Тастатура), али програмер њима управља и на нивоу конкретних поља.
За разлику од аутоматске корекције, аутоматска капитализација не користи језички модел — ради по једноставним правилима: после тачке и размака, на почетку текста, после знака новог реда. Изузетак је режим words, где прво слово сваке речи постаје велико, без обзира на контекст.
UITextAutocapitalizationType је набрајање са четири вредности које дефинишу стратегију аутоматског претварања регистра. Сваки режим је намењен одређеној врсти текстуалних поља и решава конкретан задатак корисничког искуства.
Режим .none потпуно искључује аутоматско претварање регистра. Сви знакови се уносе у оном регистру у којем их корисник куца. Овај режим је обавезан за поља лозинки, email адреса, корисничких имена, претрага и свих поља где регистар има значај за обраду података на серверу.
Режим .words чини прво слово сваке унете речи великим. Систем одређује границу речи по размаку и претвара први знак после размака у велики. Режим је згодан за поља уноса имена, презимена, назива градова, улица и других поља где свака реч треба да почне великим словом.
Режим .sentences — најчешћи и користи се подразумевано за већину текстуалних поља. Систем чини великим прво слово после тачке, узвичника или упитника, иза којих следи размак. Режим је идеалан за поља уноса белешки, порука, коментара и других вишередних текстова.
Режим .allCharacters претвара све унете знакове у велика слова. Овај режим је еквивалентан сталном притиску Caps Lock-а и користи се за поља где подаци треба да буду у великим словима: поштански бројеви, кодови земаља, скраћенице, бројеви поруџбина. Треба га примењивати са опрезом, јер је текст у великим словима тежи за читање.
| Режим | Опис | Пример уноса | Препорука |
|---|---|---|---|
| .none | Без промена | john@mail.com | Email, лозинке, претрага |
| .words | Свака реч | Иван Петровић | Име, адреса, град |
| .sentences | Почетак реченице | Здраво. Како си? | Поруке, белешке |
| .allCharacters | Сва велика слова | ABC-123 | Кодови, индекси |
Механизам аутоматске капитализације активира се у фази обраде притиска тастера, пре приказивања знака на екрану. Када корисник притисне тастер, UITextInputTraits проверава тренутну позицију курсора и примењује правило претварања регистра у складу са подешеним autocapitalizationType.
За режим .sentences, систем прати окидачке знакове: тачку (.), узвичник (!), упитник (?), као и знак новог реда ( ) када је режим укључен. Након откривања окидачког знака и следећег размака, систем поставља заставицу „очекивање великог слова" за следећи унети знак.
Режим .words прати знак размака као окидач. Након сваког размака, систем очекује велико слово за следећу реч. Међутим, постоје изузеци: после цртице, апострофа и других интерпункцијских знакова унутар речи, велико слово се не убацује. На пример, „О'Брајен" ће остати коректно.
Важна карактеристика — аутоматска капитализација ради само за први знак речи. Ако корисник уноси реч која садржи велика слова у средини (на пример, iPhone или macOS), систем их не мења, јер се претварање примењује само на први знак после окидача. То значи да називи брендова и производа са нестандардним регистром неће бити оштећени.
Аутоматску капитализацију треба искључити у пољима где регистар знакова има значај за коректну обраду података. Главни случајеви: поља за унос email адреса, корисничких имена, лозинки, претрага, URL адреса, кодова потврде, IMEI и серијских бројева. У свим овим случајевима, аутоматска промена регистра ће довести до грешака при обради на серверу.
За траке за претрагу (UISearchBar), аутоматска капитализација је подразумевано искључена, што одговара очекивањима корисника. Упит за претрагу може се унети у било ком регистру, а сервер га обично сам претвара у мала слова. Ако укључите аутоматску капитализацију за претрагу, корисник ће сваки пут морати ручно да исправља велико слово на почетку упита.
У обрасцима за регистрацију, поље username или nickname треба да има режим .none, јер многи системи разликују регистар знакова у корисничким именима. Поље email такође треба да буде без аутоматске капитализације — иако имена домена нису осетљива на регистар, локални део email-а теоретски може разликовати регистар, иако је то у пракси ретко.
Према Apple Developer Documentation, поља са secureTextEntry (лозинке) аутоматски наслеђују autocapitalizationType = .none, чак и ако је програмер експлицитно поставио другу вредност. Систем има највиши приоритет за заштићени унос и игнорише све покушаје укључивања аутоматске капитализације за поље лозинке.
Подешавање аутоматске капитализације у Swift-у се врши преко својства autocapitalizationType. Својство је доступно за UITextField, UITextView и UISearchBar. Вредност се може поставити како у коду, тако и преко Interface Builder-а у инспектору атрибута, где се режим назива Capitalization.
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
За образац за контакт подесите свако поље у складу са његовом семантиком: име — .words, email — .none, порука — .sentences. Ова комбинација обезбеђује најбоље корисничко искуство и минимизира потребу за ручним исправљањем регистра.
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
}
}
За програмску промену режима у рантајму користите делегата UITextFieldDelegate. На пример, ако се поље може користити у различитим контекстима, мењајте autocapitalizationType у методи textFieldDidBeginEditing у зависности од тренутног режима рада обрасца.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
Аутоматска капитализација зависи од језика уноса постављеног на тастатури корисника. За различите језике, правила претварања регистра могу се разликовати. На пример, у турском језику слово „i" у великом регистру постаје „İ" (са тачком), а „I" у малом регистру постаје „ı" (без тачке). iOS аутоматски узима у обзир ове особености.
За српски језик, аутоматска капитализација ради по истим правилима као и за енглески: велико слово после тачке, на почетку реченице и после новог реда.
За кинески, јапански и корејски језик, аутоматска капитализација се не примењује, јер ови језици немају концепт регистра. Режим autocapitalizationType систем игнорише при коришћењу одговарајућих тастатура, а поље се понаша исто као у режиму .none, без обзира на подешену вредност.
За арапски језик и хебрејски, аутоматска капитализација се такође не примењује, јер ови језици користе сопствени систем писања без поделе на мала и велика слова. iOS систем коректно одређује језик уноса и игнорише подешавања аутоматске капитализације за језике где овај концепт не постоји.
Често постављана питања
Да, својство autocapitalizationType се може мењати у било ком тренутку, чак и када је поље већ активно. Промена ступа на снагу при следећем уносу знака.
Да, за поља са isSecureTextEntry = true, систем аутоматски поставља autocapitalizationType = .none. Програмска промена овог понашања није могућа.
Да, UITextView у потпуности подржава autocapitalizationType. Ово је посебно корисно за вишередна поља, где режим .sentences ради најприродније.
Ако поље није означено као secureTextEntry, али се користи за унос лозинке, аутоматска капитализација може променити лозинку. Увек је искључите за поља где регистар има значај.
На симулатору, аутоматска капитализација ради преко хардверске тастатуре Mac-а и може се понашати другачије. Тестирајте на стварном уређају за исправан рад.
Закључци
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође