Autocapitalization — bu iOS mexanizmi bo‘lib, ma’lum kontekstlarda kiritilgan matnning birinchi harfini avtomatik ravishda bosh harfga aylantiradi. UIKit UITextInputTraits protokolida autocapitalizationType xususiyatini to‘rt rejim bilan taqdim etadi: none, words, sentences va allCharacters. Apple Text Programming Guide (2025) ma’lumotlariga ko‘ra, avtokapitalizatsiyani to‘g‘ri sozlash foydalanuvchi tajribasini yaxshilaydi va kiritish vaqtida qo‘lda tuzatishlar sonini kamaytiradi. Aksariyat matn maydonlari uchun sentences rejimidan, foydalanuvchi nomlari va parollar uchun esa none rejimidan foydalaning.
Asosiy fikrlar
Autocapitalization (avtokapitalizatsiya) — bu iOS operatsion tizimining funksiyasi bo‘lib, muayyan shartlar yuz berganda matnning birinchi belgisini avtomatik ravishda bosh harfga aylantiradi. Mexanizm UITextInputTraits protokolini amalga oshiradigan barcha elementlar uchun mavjud bo‘lgan autocapitalizationType xususiyati orqali boshqariladi: UITextField, UITextView va UISearchBar.
Funksiya iOS matn dvigateli darajasida ishlaydi va har bir belgi kiritilganda faollashadi. Tizim kursorni joylashuvi va atrofdagi matnni tahlil qiladi, joriy kiritilayotgan belgini bosh harfga aylantirish kerakligini aniqlash uchun. Agar shart bajarilsa, iOS belgi maydonda ko‘rsatilishidan oldin kichik harfni avtomatik ravishda bosh harf bilan almashtiradi.
Apple Human Interface Guidelines (2025) ma’lumotlariga ko‘ra, avtokapitalizatsiya avtokorreksiya va prediktiv matn kiritishni ham o‘z ichiga olgan kengroq bashoratli kiritish tizimining bir qismidir. Foydalanuvchi barcha bu funksiyalarni tizim sozlamalarida (Sozlamalar > Umumiy > Klaviatura) global o‘chirishi mumkin, ammo dasturchi ham ularni aniq maydonlar darajasida boshqaradi.
Avtokorreksiyadan farqli o‘laroq, avtokapitalizatsiya til modelidan foydalanmaydi — oddiy qoidalar bo‘yicha ishlaydi: nuqta va bo‘shliqdan keyin, matn boshida, yangi qator belgisidan keyin. Istisno words rejimi bo‘lib, unda kontekstdan qat’i nazar, har bir so‘zning birinchi harfi bosh harf bo‘ladi.
UITextAutocapitalizationType — bu registrni avtomatik o‘zgartirish strategiyasini belgilaydigan to‘rt qiymatli sanab o‘tishdir. Har bir rejim ma’lum turdagi matn maydonlari uchun mo‘ljallangan va foydalanuvchi tajribasining aniq vazifasini hal qiladi.
.none rejimi registrni avtomatik o‘zgartirishni butunlay o‘chiradi. Barcha belgilar foydalanuvchi tergan registrda kiritiladi. Bu rejim parol, email manzillari, taxalluslar, qidiruv so‘rovlari va registr serverda ma’lumotlarni qayta ishlash uchun muhim bo‘lgan har qanday maydonlar uchun majburiydir.
.words rejimi kiritilgan har bir so‘zning birinchi harfini bosh harf qiladi. Tizim so‘z chegarasini bo‘shliq bo‘yicha aniqlaydi va bo‘shliqdan keyingi birinchi belgini bosh harfga aylantiradi. Rejim ism, familiya, shahar nomlari, ko‘chalar va har bir so‘z bosh harf bilan boshlanishi kerak bo‘lgan boshqa maydonlar uchun qulay.
.sentences rejimi — eng keng tarqalgan va aksariyat matn maydonlari uchun standart sifatida ishlatiladi. Tizim nuqta, undov yoki so‘roq belgisidan keyin birinchi harfni bosh harf qiladi. Rejim eslatmalar, xabarlar, sharhlar va boshqa ko‘p qatorli matnlarni kiritish maydonlari uchun idealdir.
.allCharacters rejimi barcha kiritilgan belgilarni bosh harflarga aylantiradi. Bu rejim Caps Lock-ni doimiy bosib turishga teng va ma’lumotlar bosh harflarda bo‘lishi kerak bo‘lgan maydonlar uchun ishlatiladi: pochta indekslari, mamlakat kodlari, qisqartmalar, buyurtma raqamlari. Ehtiyotkorlik bilan qo‘llash kerak, chunki bosh harflardagi matnni o‘qish qiyinroq.
| Rejim | Tavsif | Kiritish namunasi | Tavsiya |
|---|---|---|---|
| .none | O‘zgarishsiz | john@mail.com | Email, parollar, qidiruv |
| .words | Har bir so‘z | Ali Valiyev | Ism, manzil, shahar |
| .sentences | Jumla boshi | Salom. Qandaysiz? | Xabarlar, eslatmalar |
| .allCharacters | Barcha bosh | ABC-123 | Kodlar, indekslar |
Avtokapitalizatsiya mexanizmi tugma bosilishini qayta ishlash bosqichida, belgi ekranda ko‘rsatilishidan oldin faollashadi. Foydalanuvchi tugmani bosganda, UITextInputTraits kursorni joriy joylashuvini tekshiradi va o‘rnatilgan autocapitalizationType bo‘yicha registrni o‘zgartirish qoidasini qo‘llaydi.
.sentences rejimi uchun tizim trigger belgilarini kuzatadi: nuqta (.), undov belgisi (!), so‘roq belgisi (?), shuningdek rejim yoqilgan bo‘lsa yangi qator belgisi ( ). Trigger belgisi va undan keyingi bo‘shliq aniqlangandan so‘ng, tizim keyingi kiritiladigan belgi uchun “bosh harf kutish” bayrog‘ini o‘rnatadi.
.words rejimi bo‘shliq belgisini trigger sifatida kuzatadi. Har bir bo‘shliqdan keyin tizim keyingi so‘z uchun bosh harfni kutadi. Biroq istisnolar mavjud: defisdan, apostrofdan va so‘z ichidagi boshqa tinish belgilaridan keyin bosh harf qo‘yilmaydi. Masalan, “O’Brien” to‘g‘ri qoladi.
Muhim xususiyat — avtokapitalizatsiya faqat so‘zning birinchi belgisi uchun ishlaydi. Agar foydalanuvchi o‘rtasida bosh harflar bo‘lgan so‘z kiritsa (masalan, iPhone yoki macOS), tizim ularni o‘zgartirmaydi, chunki o‘zgartirish faqat triggerdan keyingi birinchi belgiga qo‘llaniladi. Bu nostandart registrli brend va mahsulot nomlari buzilmasligini anglatadi.
Avtokapitalizatsiyani o‘chirish kerak registr ma’lumotlarni to‘g‘ri qayta ishlash uchun muhim bo‘lgan maydonlarda. Asosiy holatlar: email manzillari, taxalluslar va foydalanuvchi nomlari, parollar, qidiruv so‘rovlari, URL manzillari, tasdiqlash kodlari, IMEI va seriya raqamlari. Barcha bu holatlarda registrni avtomatik o‘zgartirish serverda qayta ishlashda xatolarga olib keladi.
Qidiruv satrlari (UISearchBar) uchun avtokapitalizatsiya standart o‘chirilgan, bu foydalanuvchilarning kutishlariga mos keladi. Qidiruv so‘rovi istalgan registrda kiritilishi mumkin va server odatda uni o‘zi kichik harflarga o‘tkazadi. Agar qidiruv uchun avtokapitalizatsiyani yoqsangiz, foydalanuvchi har safar so‘rov boshidagi bosh harfni qo‘lda tuzatishga majbur bo‘ladi.
Ro‘yxatdan o‘tish shakllarida username yoki nickname maydoni .none rejimiga ega bo‘lishi kerak, chunki ko‘p tizimlar foydalanuvchi nomlarida registrni farqlaydi. Email maydoni ham avtokapitalizatsiyasiz bo‘lishi kerak — domen nomlari registrga sezgir bo‘lmasa-da, email-ning mahalliy qismi nazariy jihatdan registrni farqlashi mumkin, garchi amalda bu kamdan-kam uchrasa ham.
Apple Developer Documentation ga ko‘ra, secureTextEntry (parollar) bo‘lgan maydonlar avtomatik ravishda autocapitalizationType = .none ni meros qilib oladi, hatto dasturchi aniq boshqa qiymat o‘rnatgan bo‘lsa ham. Tizim himoyalangan kiritish uchun eng yuqori ustuvorlikka ega va parol maydoni uchun avtokapitalizatsiyani yoqishga urinishlarni e’tiborsiz qoldiradi.
Avtokapitalizatsiyani sozlash Swift-da autocapitalizationType xususiyati orqali amalga oshiriladi. Xususiyat UITextField, UITextView va UISearchBar uchun mavjud. Qiymatni kodda ham, Interface Builder orqali atributlar inspektorida ham o‘rnatish mumkin, bu erda rejim Capitalization deb nomlanadi.
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
Aloqa formasi uchun har bir maydonni semantikasiga qarab sozlang: ism — .words, email — .none, xabar — .sentences. Bunday kombinatsiya eng yaxshi foydalanuvchi tajribasini ta’minlaydi va registrni qo‘lda tuzatish ehtiyojini kamaytiradi.
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
}
}
Dasturiy o‘zgartirish uchun UITextFieldDelegate dan foydalaning. Masalan, maydon turli kontekstlarda ishlatilishi mumkin bo‘lsa, formaning joriy ish rejimiga qarab textFieldDidBeginEditing metodida autocapitalizationType ni o‘zgartiring.
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
Avtokapitalizatsiya foydalanuvchi klaviaturasida o‘rnatilgan kiritish tiliga bog‘liq. Turli tillar uchun registrni o‘zgartirish qoidalari farq qilishi mumkin. Masalan, turk tilida “i” harfi bosh registrda “İ” (nuqta bilan), “I” esa kichik registrda “ı” (nuqtasiz) bo‘ladi. iOS bu xususiyatlarni avtomatik hisobga oladi.
Rus tili uchun avtokapitalizatsiya ingliz tili bilan bir xil qoidalar bo‘yicha ishlaydi: nuqtadan keyin, jumla boshida va yangi qatordan keyin bosh harf. “Jo” harfi bilan muammolar yuzaga kelishi mumkin — u tizim lug‘atida mavjud bo‘lsa-da, barcha klaviatura tartiblari uni asosiy qatlamda ko‘rsatmaydi va avtokapitalizatsiya uni to‘g‘ri bosh harfga aylantiradi.
Xitoy, yapon va koreys tillari uchun avtokapitalizatsiya qo‘llanilmaydi, chunki bu tillarda registr tushunchasi yo‘q. Tegishli klaviaturalardan foydalanganda autocapitalizationType rejimi tizim tomonidan e’tiborga olinmaydi va maydon o‘rnatilgan qiymatdan qat’i nazar .none rejimidagi kabi harakat qiladi.
Arab tili va ibroniy tili uchun ham avtokapitalizatsiya qo‘llanilmaydi, chunki bu tillar kichik va bosh harflarga bo‘linmaydigan o‘z yozuv tizimidan foydalanadi. iOS tizimi kiritish tilini to‘g‘ri aniqlaydi va bu tushuncha mavjud bo‘lmagan tillar uchun avtokapitalizatsiya sozlamalarini e’tiborsiz qoldiradi.
Tez-tez beriladigan savollar
Ha, autocapitalizationType xususiyatini istalgan vaqtda, hatto maydon faol bo‘lganda ham o‘zgartirish mumkin. O‘zgarish keyingi belgi kiritilganda kuchga kiradi.
Ha, isSecureTextEntry = true bo‘lgan maydonlar uchun tizim avtomatik ravishda autocapitalizationType = .none ni o‘rnatadi. Bu xatti-harakatni dasturiy o‘zgartirish mumkin emas.
Ha, UITextView autocapitalizationType ni to‘liq qo‘llab-quvvatlaydi. Bu, ayniqsa, .sentences rejimi eng tabiiy ishlaydigan ko‘p qatorli maydonlar uchun foydali.
Agar maydon secureTextEntry sifatida belgilanmagan bo‘lsa, lekin parol kiritish uchun ishlatilsa, avtokapitalizatsiya parolni o‘zgartirishi mumkin. Registr muhim bo‘lgan maydonlarda uni har doim o‘chiring.
Simulyatorda avtokapitalizatsiya Mac-ning fizik klaviaturasi orqali ishlaydi va boshqacha harakat qilishi mumkin. To‘g‘ri harakat qilish uchun haqiqiy qurilmada sinab ko‘ring.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.