Text Content Type — bu iOS mexanizmidir, sistemə mətn sahəsinin hansı məlumatları gözlədiyini bildirir. UIKit daxiletmə sahələrini qeyd etmək üçün UITextContentType sabitlərini təqdim edir: email, parol, telefon, username və onlarla digər semantik növlər. Apple Human Interface Guidelines (2025) məlumatlarına görə, content type-in düzgün qurulması avtomatik doldurma və adaptiv klaviatura hesabına formaların doldurulma sürətini 40% artırır. Hər mətn sahəsində UITextContentType istifadə edin — bu istifadəçi təcrübəsini yaxşılaşdırır və daxiletmə xətalarının sayını azaldır.
Əsas məqamlar
Text Content Type (UITextContentType) — bu UIKit mətn sahələrinin xüsusiyyətidir, iOS-a daxiletmə sahəsinin hansı semantik məlumatları gözlədiyini bildirir. Sistem bu məlumatı iki məqsəd üçün istifadə edir: uyğun klaviatura düzümünün seçilməsi və açar dəstəsindən (iCloud Keychain) avtomatik doldurma mexanizminin aktivləşdirilməsi.
iOS 5-də semantik növlərin ilk versiyası təqdim edildi, iOS 17-də isə UITextContentType dəsti 34 sabitə qədər genişləndi, o cümlədən birdəfəlik kodlar, poçt indeksləri və küçə adları üçün yeni növlər. Hər sabit sistemin daxili emal qaydaları ilə uyğunlaşdırdığı bir sətri təmsil edir.
Mexanizm UITextInputTraits səviyyəsində işləyir — UITextField, UITextView və UISearchBar-ın miras aldığı protokol. Bu o deməkdir ki, content type əlavə konfiqurasiya olmadan bütün standart daxiletmə elementlərində mövcuddur.
WWDC 2024 Session 101 məlumatlarına görə, Apple interfeysdəki hər mətn sahəsi üçün content type təyin etməyi tövsiyə edir — hətta avtomatik doldurma nəzərdə tutulmasa belə. Etiketin özü VoiceOver-a məhdud imkanlı istifadəçilər üçün sahənin məqsədini düzgün səsləndirməyə kömək edir.
UIKit kateqoriyalara bölünmüş növ iyerarxiyasını təqdim edir. Əsas qruplara şəxsiyyət məlumatları (ad, soyad, username), əlaqə məlumatları (email, telefon, ünvan) və hesablar (parol, birdəfəlik kod) daxildir. Hər qrup müxtəlif avtomatik doldurma mexanizmlərini aktivləşdirir.
Əlaqə növləri qrupuna `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` və `.city` daxildir. Bu növlər kontaktlardan və iCloud Keychain-dən avtomatik doldurmanı aktivləşdirir. `.emailAddress` növü olan sahə əvvəllər daxil edilmiş email ünvanlarını, `.telephoneNumber` isə ünvan kitabçasından telefon nömrələrini təklif edir.
Giriş sahələri üçün .username, .password və .newPassword nəzərdə tutulub. .username növü saxlanmış hesabları təklif edən iCloud parol menecerini aktivləşdirir. .newPassword növü olan sahə ilk daxiletmədə iCloud Keychain vasitəsilə təhlükəsiz parol yaradılmasını başladır.
iOS 17-dən başlayaraq, Apple SMS təsdiq kodları üçün .oneTimeCode və bağlamaların izlənməsi üçün .shipmentTrackingNumber əlavə etdi. .oneTimeCode növü mesajlardan kodları avtomatik tanıyır və Messages tətbiqini açmağa ehtiyac olmadan QuickType sətrində təklif edir.
| Kateqoriya | Növlər | iOS |
|---|---|---|
| Şəxsiyyət | .name, .givenName, .familyName, .nickname | 5+ |
| Əlaqələr | .emailAddress, .telephoneNumber, .fullStreetAddress | 5+ |
| Hesablar | .username, .password, .newPassword | 5+ |
| Məkan | .location, .city, .state, .postalCode | 10+ |
| Kart məlumatları | .creditCardNumber, .creditCardSecurityCode | 12+ |
| Birdəfəlik kodlar | .oneTimeCode | 17+ |
Hər növ sətir sabiti ilə təmsil olunur, lakin onları == operatoru ilə müqayisə etmək lazımdır, rawValue ilə deyil. iOS gələcək versiyalarda yeni növlər əlavə edə bilər, buna görə switch-case-də həmişə default budağından istifadə edin.
UIKeyboardType və UITextContentType birlikdə işləyir: keyboard type klaviatura düzümünü, content type isə QuickType sətrindəki əlavə düymələri müəyyən edir. Əgər content type təyin edilibsə, iOS optimal daxiletmə üçün keyboard type-ı ləğv edə bilər. Məsələn, `.emailAddress` növündə klaviatura əsas qatda @ simvolunu avtomatik göstərir.
.telephoneNumber növü olan sahə üçün iOS quraşdırılmış keyboard type-dan asılı olmayaraq klaviaturanı telefon düzümünə keçirir. Bu davranışı söndürmək mümkün deyil — sistem content type-ın prioritetini açıq klaviatura konfiqurasiyasından yüksək hesab edir. Tərtibatçılar hər iki xüsusiyyətin parametrlərini təkrarlamalı deyillər.
.URL və .emailAddress növləri klaviaturaya müvafiq olaraq .com və @ düymələrini əlavə edir. .creditCardNumber content type-ı ilə .decimalPad növü onluq ayırıcı ilə rəqəm klaviaturasını göstərir, bu da məbləğlərin və kart nömrələrinin daxil edilməsi üçün əlverişlidir. Apple Human Interface Guidelines məlumatlarına görə, istifadəçi klaviaturanın daxil edilən məlumat növünə uyğun olmasını gözləyir, əksini deyil.
.oneTimeCode istisnadır — bu növ klaviatura düzümünü dəyişmir, lakin SMS-dən kodlarla QuickType sətrini aktivləşdirir. İstifadəçi klaviatura üzərində kod təklifini görür və bir toxunuşla onu daxil edə bilər. Mexanizm yalnız SMS aldıqdan sonra first responder olan sahələr üçün işləyir.
Avtomatik doldurma iOS-da Text Content Type-dən daxiletmə sahələrini iCloud Keychain və ASCredentialProviderViewController məlumatları ilə uyğunlaşdırmaq üçün istifadə edir. Sistem ekrandakı bütün sahələri təhlil edir, onların semantik növlərini müəyyənləşdirir və müvafiq saxlanmış məlumatları təklif edir. Düzgün göstərilmiş növlər olmadan avtomatik doldurma aktivləşmir.
Avtomatik doldurmanın işləməsi üçün üç şərt yerinə yetirilməlidir. Birinci — sahədə düzgün UITextContentType olmalıdır. İkinci — ekranda müxtəlif növə malik ən azı iki sahə olmalıdır (məsələn, .username və .password). Üçüncü — tətbiq veb-saytla sinxronizasiya üçün webcredentials entitlement-ı ilə Associated Domains-i dəstəkləməlidir.
Açar dəstəsi (Keychain) saxlanmış qeydləri təsnif etmək üçün content type-dən istifadə edir. Sahə .password kimi qeyd edilibsə, sistem daxil edilmiş dəyəri iCloud Keychain-də saxlayır və növbəti girişdə təklif edir. .creditCardNumber növü olan sahələr Face ID vasitəsilə təsdiqlənmədən sonra avtomatik olaraq Wallet-də saxlanılır.
.oneTimeCode növündəki birdəfəlik kodlar üçün iOS 17 SMS-ə birbaşa giriş tələb etməyən yeni AutoFill OTP mexanizmindən istifadə edir. Sistem mesajlardan kodları əməliyyat sistemi səviyyəsində ələ keçirir və tətbiqin mesaj məzmununu oxumasına ehtiyac olmadan QuickType sətri vasitəsilə tətbiqə ötürür.
Text Content Type-ın Swift-də əsas konfiqurasiyası kodda textContentType xüsusiyyəti və ya Interface Builder vasitəsilə həyata keçirilir. Kodda sabitin təyin edilməsi bir sətir çəkir, IB-də isə lazımi növ atributlar inspektorunda açılan siyahıdan seçilir.
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"
let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword
Avtomatik doldurma ilə giriş formasının proqram vasitəsilə yaradılması üçün müxtəlif content type-ə malik hər iki sahədən istifadə edin. Sistem onları avtomatik olaraq login və parol kimi əlaqələndirəcək. Tətbiq biometrik girişi dəstəkləyirsə, hesabın düzgün tanınması üçün .username növü olan sahə əlavə edin.
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-dən birdəfəlik kodun daxil edilməsi sahəsi üçün .oneTimeCode növünü təyin edin. Sistem kodu aldıqdan sonra onu avtomatik olaraq QuickType sətrində təklif edəcək. Tərtibatçı SMS oxumaq üçün icazə istəməli və ya öz mesaj analizini həyata keçirməli deyil.
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"
iOS 17+ üçün .oneTimeCode növü sahəyə fokus olmadan avtomatik doldurmanı dəstəkləyir. İstifadəçi SMS ilə kod alarsa, iOS onu blok ekranında təklif edir və blokdan çıxdıqdan sonra kod müvafiq content type-a malik aktiv sahəyə avtomatik daxil edilir.
Düzgün növün seçilməsi formanın konversiyasına və istifadəçi təcrübəsinə birbaşa təsir göstərir. Apple mövcud olanlardan ən konkret növü göstərməyi qətiyyətlə tövsiyə edir. Məsələn, ad sahəsi üçün .givenName istifadə edin, ümumi .name yox — bu sistemə kontaktlardan düzgün adla avtomatik doldurma təklif etməyə imkan verəcək.
Ümumi səhvdən çəkinin — username sahəsi üçün .emailAddress təyin etmək. Tətbiq email-i login kimi istifadə edirsə, login sahəsi üçün .username və parol sahəsi üçün .password növlərini təyin edin. .emailAddress növü yalnız email-in əlaqə məlumatı kimi daxil edilməsi sahələri üçün nəzərdə tutulub, identifikator kimi deyil.
Eyni növdə bir neçə sahəsi olan formalar üçün (məsələn, iki email ünvanı) hər sahə üçün .textContentType xüsusiyyətindən istifadə edin, lakin fərqli accessibilityIdentifier identifikatorları əlavə edin. Bu, VoiceOver-ın sahələri düzgün səsləndirməsinə kömək edəcək, baxmayaraq ki, avtomatik doldurma sistemi hər iki sahə üçün eyni variantı təklif edə bilər.
Avtomatik doldurmanı real cihazda doldurulmuş açar dəstəsi ilə sınayın. Simulyator iCloud Keychain-i tam həcmdə dəstəkləmir və avtomatik doldurma davranışı fərqlənə bilər. Apple Developer Forums (2025) məlumatlarına görə, avtomatik doldurma ilə bağlı ən çox rast gəlinən problemlər məhz səhv göstərilmiş content type-dan qaynaqlanır.
Tez-tez verilən suallar
UITextContentType semantik məlumat növünü, UIKeyboardType isə klaviatura düzümünü müəyyən edir. Content type optimal daxiletmə üçün keyboard type-ı ləğv edə bilər.
Avtomatik doldurmanı .username, .password, .newPassword, .emailAddress, .telephoneNumber və .creditCardNumber növləri aktivləşdirir. Sistem bu növləri açar dəstəsindəki məlumatlarla uyğunlaşdırır.
Bəli, WKWebView autocomplete atributu olan HTML sahələri üçün Text Content Type-ı dəstəkləyir. iOS avtomatik olaraq autocomplete atributlarını UITextContentType növləri ilə uyğunlaşdırır.
Bəli, UITextView də UITextInputTraits-i miras alır və textContentType xüsusiyyətini dəstəkləyir. Bu, əlaqə məlumatlarının daxil edilməsi üçün çoxsətirli sahələrdə faydalıdır.
Sistem avtomatik doldurma üçün yanlış məlumatlar təklif edə bilər və ya heç nə təklif etməyə bilər. Məsələn, .emailAddress növü olan username sahəsi login əvəzinə email təklif edə bilər.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun