Text Content Type — bu iOS mexanizmi bo'lib, tizimga matn maydoni qanday ma'lumotlarni kutayotganini bildiradi. UIKit UITextContentType konstantalarini kiritish maydonlarini belgilash uchun taqdim etadi: email, parol, telefon, foydalanuvchi nomi va o'nlab boshqa semantik turlar. Apple Human Interface Guidelines (2025) ma'lumotlariga ko'ra, content type-ni to'g'ri sozlash avtomatik to'ldirish va adaptiv klaviatura hisobiga formlarni to'ldirish tezligini 40% ga oshiradi. Har bir matn maydonida UITextContentType dan foydalaning — bu foydalanuvchi tajribasini yaxshilaydi va kiritish xatolari sonini kamaytiradi.
Asosiy fikrlar
Text Content Type (UITextContentType) — bu UIKit matn maydonlarining xususiyati bo'lib, iOS-ga kiritish maydoni qanday semantik ma'lumotlarni kutayotganini bildiradi. Tizim bu ma'lumotni ikki maqsadda ishlatadi: tegishli klaviatura tartibini tanlash va kalitlar bog'lamidan (iCloud Keychain) avtomatik to'ldirish mexanizmini faollashtirish.
iOS 5 da semantik turlarning birinchi versiyasi joriy etildi, iOS 17 da esa UITextContentType to'plami 34 konstantagacha kengaydi, jumladan bir martalik kodlar, pochta indekslari va ko'cha nomlari uchun yangi turlar. Har bir konstanta tizim ichki qayta ishlash qoidalari bilan moslashtiradigan qatorni ifodalaydi.
Mexanizm UITextInputTraits darajasida ishlaydi — UITextField, UITextView va UISearchBar meros qilib oladigan protokol. Bu degani, content type qo'shimcha konfiguratsiyasiz barcha standart kiritish elementlarida mavjud.
WWDC 2024 Session 101 ma'lumotlariga ko'ra, Apple interfeysdagi har bir matn maydoni uchun content type ni ko'rsatishni tavsiya qiladi — hatto avtomatik to'ldirish ko'zda tutilmagan bo'lsa ham. Yorliqning o'zi VoiceOver ga imkoniyati cheklangan foydalanuvchilar uchun maydonning maqsadini to'g'ri aytishga yordam beradi.
UIKit toifalarga bo'lingan turlar ierarxiyasini taqdim etadi. Asosiy guruhlar shaxsiy ma'lumotlar (ism, familiya, foydalanuvchi nomi), aloqa ma'lumotlari (email, telefon, manzil) va hisob qaydlari (parol, bir martalik kod) ni o'z ichiga oladi. Har bir guruh turli avtomatik to'ldirish mexanizmlarini faollashtiradi.
Aloqa turlari guruhiga `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` va `.city` kiradi. Bu turlar kontaktlardan va iCloud Keychain dan avtomatik to'ldirishni faollashtiradi. `.emailAddress` turidagi maydon avval kiritilgan email manzillarni avtomatik taklif qiladi, `.telephoneNumber` esa — manzillar kitobidan telefon raqamlarini.
Kirish maydonlari uchun .username, .password va .newPassword mo'ljallangan. .username turi saqlangan hisob qaydlarini taklif qiladigan iCloud parol menejerini faollashtiradi. .newPassword turidagi maydon birinchi kiritishda iCloud Keychain orqali xavfsiz parol yaratishni boshlaydi.
iOS 17 dan boshlab, Apple SMS tasdiqlash kodlari uchun .oneTimeCode va posilkalarni kuzatish uchun .shipmentTrackingNumber ni qo'shdi. .oneTimeCode turi xabarlardan kodlarni avtomatik taniydi va Messages ilovasini ochishga hojat qoldirmasdan QuickType qatorida taklif qiladi.
| Toifa | Turlar | iOS |
|---|---|---|
| Shaxsiyat | .name, .givenName, .familyName, .nickname | 5+ |
| Kontaktlar | .emailAddress, .telephoneNumber, .fullStreetAddress | 5+ |
| Hisob qaydlari | .username, .password, .newPassword | 5+ |
| Joylashuv | .location, .city, .state, .postalCode | 10+ |
| Karta ma'lumotlari | .creditCardNumber, .creditCardSecurityCode | 12+ |
| Bir martalik kodlar | .oneTimeCode | 17+ |
Har bir tur qator konstantasi bilan ifodalanadi, lekin ularni == operatori orqali solishtirish kerak, rawValue orqali emas. iOS kelajakdagi versiyalarda yangi turlar qo'shishi mumkin, shuning uchun switch-case da har doim default tarmog'idan foydalaning.
UIKeyboardType va UITextContentType birgalikda ishlaydi: keyboard type klaviatura tartibini, content type esa QuickType qatoridagi qo'shimcha tugmalarni belgilaydi. Agar content type ko'rsatilgan bo'lsa, iOS optimal kiritish uchun keyboard type ni bekor qilishi mumkin. Masalan, `.emailAddress` turida klaviatura asosiy qatlamda @ belgisini avtomatik ko'rsatadi.
.telephoneNumber turidagi maydon uchun iOS o'rnatilgan keyboard type dan qat'iy nazar klaviaturani telefon tartibiga o'tkazadi. Bu xatti-harakatni o'chirib bo'lmaydi — tizim content type ning ustuvorligini aniq klaviatura sozlamasidan yuqori deb hisoblaydi. Dasturchilar ikkala xususiyatning sozlamalarini takrorlashi shart emas.
.URL va .emailAddress turlari klaviaturaya mos ravishda .com va @ tugmalarini qo'shadi. .creditCardNumber content type bilan .decimalPad turi o'nli ajratgichli raqamli klaviaturani ko'rsatadi, bu summalar va karta raqamlarini kiritish uchun qulay. Apple Human Interface Guidelines ma'lumotlariga ko'ra, foydalanuvchi klaviatura kiritilayotgan ma'lumot turiga mos kelishini kutadi, aksini emas.
.oneTimeCode istisnodir — bu tur klaviatura tartibini o'zgartirmaydi, lekin SMS dan kodlar bilan QuickType qatorini faollashtiradi. Foydalanuvchi klaviatura ustidagi kod taklifini ko'radi va bir tegish bilan uni kiritishi mumkin. Mexanizm faqat SMS olgandan keyin first responder bo'ladigan maydonlar uchun ishlaydi.
Avtomatik to'ldirish iOS da Text Content Type dan kiritish maydonlarini iCloud Keychain va ASCredentialProviderViewController ma'lumotlari bilan moslashtirish uchun foydalanadi. Tizim ekrandagi barcha maydonlarni tahlil qiladi, ularning semantik turlarini aniqlaydi va tegishli saqlangan ma'lumotlarni taklif qiladi. To'g'ri ko'rsatilgan turlarsiz avtomatik to'ldirish faollashmaydi.
Avtomatik to'ldirish ishlashi uchun uchta shart bajarilishi kerak. Birinchisi — maydon to'g'ri UITextContentType ga ega bo'lishi kerak. Ikkinchisi — ekranda turli turlarga ega kamida ikkita maydon bo'lishi kerak (masalan, .username va .password). Uchinchisi — ilova veb-sayt bilan sinxronlash uchun webcredentials entitlement bilan Associated Domains ni qo'llab-quvvatlashi kerak.
Kalitlar bog'lami (Keychain) saqlangan yozuvlarni tasniflash uchun content type dan foydalanadi. Agar maydon .password deb belgilangan bo'lsa, tizim kiritilgan qiymatni iCloud Keychain da saqlaydi va keyingi kirishda taklif qiladi. .creditCardNumber turidagi maydonlar Face ID orqali tasdiqlangandan keyin avtomatik Wallet da saqlanadi.
.oneTimeCode turidagi bir martalik kodlar uchun iOS 17 SMS ga to'g'ridan-to'g'ri kirishni talab qilmaydigan yangi AutoFill OTP mexanizmidan foydalanadi. Tizim xabarlardan kodlarni operatsion tizim darajasida tutib oladi va ilovaning xabar mazmunini o'qishiga hojat qoldirmasdan QuickType qatori orqali ilovaga uzatadi.
Text Content Type ni Swift da asosiy sozlash kodda textContentType xususiyati orqali yoki Interface Builder orqali amalga oshiriladi. Kodda konstantani tayinlash bir qatorni egallaydi, IB da esa kerakli tur atributlar inspektoridagi ochiladigan ro'yxatdan tanlanadi.
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"
let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword
Avtomatik to'ldirish bilan kirish formasini dasturiy yaratish uchun turli content type ga ega ikkala maydondan foydalaning. Tizim ularni avtomatik ravishda login va parol sifatida bog'laydi. Agar ilova biometrik kirishni qo'llab-quvvatlasa, hisob qaydini to'g'ri tanib olish uchun .username turidagi maydon qo'shing.
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
}
}
SMS dan bir martalik kodni kiritish maydoni uchun .oneTimeCode turini belgilang. Tizim kodni olgandan keyin uni avtomatik QuickType qatorida taklif qiladi. Dasturchi SMS o'qish uchun ruxsat so'rashi yoki o'z xabar tahlilini amalga oshirishi shart emas.
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"
iOS 17+ uchun .oneTimeCode turi maydonga fokuslanmasdan avtomatik to'ldirishni qo'llab-quvvatlaydi. Agar foydalanuvchi SMS bilan kod olsa, iOS uni qulf ekranida taklif qiladi va qulfni ochgandan keyin kod tegishli content type ga ega faol maydonga avtomatik kiritiladi.
To'g'ri turni tanlash formaning konversiyasiga va foydalanuvchi tajribasiga bevosita ta'sir qiladi. Apple mavjud bo'lganlardan eng aniq turni ko'rsatishni qat'iy tavsiya qiladi. Masalan, ism maydoni uchun .givenName dan foydalaning, umumiy .name emas — bu tizimga kontaktlardan to'g'ri ism bilan avtomatik to'ldirishni taklif qilish imkonini beradi.
Keng tarqalgan xatodan saqlaning — username maydoni uchun .emailAddress ni o'rnatish. Agar ilova email ni login sifatida ishlatsa, login maydoni uchun .username va parol maydoni uchun .password turlarini belgilang. .emailAddress turi faqat emailni aloqa ma'lumoti sifatida kiritish maydonlari uchun mo'ljallangan, identifikator sifatida emas.
Bir xil turdagi bir nechta maydoni bo'lgan formalar uchun (masalan, ikkita email manzil) har bir maydon uchun .textContentType xususiyatidan foydalaning, lekin turli accessibilityIdentifier identifikatorlarini qo'shing. Bu VoiceOver ga maydonlarni to'g'ri aytishga yordam beradi, garchi avtomatik to'ldirish tizimi ikkala maydon uchun bir xil variantni taklif qilishi mumkin.
Avtomatik to'ldirishni haqiqiy qurilmada to'ldirilgan kalitlar bog'lami bilan sinab ko'ring. Simulyator iCloud Keychain ni to'liq qo'llab-quvvatlamaydi va avtomatik to'ldirish harakati farq qilishi mumkin. Apple Developer Forums (2025) ma'lumotlariga ko'ra, avtomatik to'ldirish bilan bog'liq eng keng tarqalgan muammolar aynan noto'g'ri ko'rsatilgan content type dan kelib chiqadi.
Tez-tez so'raladigan savollar
UITextContentType semantik ma'lumot turini, UIKeyboardType esa klaviatura tartibini belgilaydi. Content type optimal kiritish uchun keyboard type ni bekor qilishi mumkin.
Avtomatik to'ldirishni .username, .password, .newPassword, .emailAddress, .telephoneNumber va .creditCardNumber turlari faollashtiradi. Tizim bu turlarni kalitlar bog'lamidagi ma'lumotlar bilan moslashtiradi.
Ha, WKWebView autocomplete atributiga ega HTML maydonlari uchun Text Content Type ni qo'llab-quvvatlaydi. iOS avtomatik ravishda autocomplete atributlarini UITextContentType turlari bilan moslashtiradi.
Ha, UITextView ham UITextInputTraits ni meros qilib oladi va textContentType xususiyatini qo'llab-quvvatlaydi. Bu aloqa ma'lumotlarini kiritish uchun ko'p qatorli maydonlarda foydalidir.
Tizim avtomatik to'ldirish uchun noto'g'ri ma'lumotlar taklif qilishi yoki hech narsa taklif qilmasligi mumkin. Masalan, .emailAddress turidagi username maydoni login o'rniga email ni taklif qilishi mumkin.
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.