Text Content Type एक iOS तंत्र है जो सिस्टम को बताता है कि टेक्स्ट फ़ील्ड किस डेटा की अपेक्षा करता है। UIKit इनपुट फ़ील्ड को चिह्नित करने के लिए UITextContentType स्थिरांक प्रदान करता है: ईमेल, पासवर्ड, फ़ोन, उपयोगकर्ता नाम और दर्जनों अन्य सिमैंटिक प्रकार। Apple Human Interface Guidelines (2025) के अनुसार, सही कंटेंट टाइप कॉन्फ़िगरेशन ऑटोफिल और अनुकूली कीबोर्ड के माध्यम से फ़ॉर्म भरने की गति को 40% तक बढ़ाता है। प्रत्येक टेक्स्ट फ़ील्ड में UITextContentType का उपयोग करें — यह उपयोगकर्ता अनुभव में सुधार करता है और इनपुट त्रुटियों को कम करता है।
मुख्य बातें
Text Content Type (UITextContentType) UIKit टेक्स्ट फ़ील्ड की एक संपत्ति है जो iOS को बताती है कि इनपुट फ़ील्ड किस सिमैंटिक डेटा की अपेक्षा करता है। सिस्टम इस जानकारी का उपयोग दो उद्देश्यों के लिए करता है: उपयुक्त कीबोर्ड लेआउट का चयन करना और कीचेन (iCloud Keychain) से ऑटोफिल तंत्र को सक्रिय करना।
iOS 5 ने सिमैंटिक प्रकारों का पहला संस्करण पेश किया, और iOS 17 में UITextContentType सेट 34 स्थिरांक तक विस्तारित हो गया, जिसमें एक-बार कोड, पोस्टल कोड और सड़क के नामों के लिए नए प्रकार शामिल हैं। प्रत्येक स्थिरांक एक स्ट्रिंग का प्रतिनिधित्व करता है जिसे सिस्टम आंतरिक प्रसंस्करण नियमों से मैप करता है।
तंत्र UITextInputTraits स्तर पर काम करता है — एक प्रोटोकॉल जो UITextField, UITextView और UISearchBar द्वारा विरासत में मिलता है। इसका मतलब है कि कंटेंट टाइप बिना अतिरिक्त कॉन्फ़िगरेशन के सभी मानक इनपुट तत्वों में उपलब्ध है।
WWDC 2024 सत्र 101 के अनुसार, Apple इंटरफ़ेस में प्रत्येक टेक्स्ट फ़ील्ड के लिए कंटेंट टाइप निर्दिष्ट करने की अनुशंसा करता है — भले ही ऑटोफिल की अपेक्षा न हो। मार्कअप स्वयं VoiceOver को विकलांग उपयोगकर्ताओं के लिए फ़ील्ड के उद्देश्य की सही घोषणा करने में मदद करता है।
UIKit श्रेणियों में विभाजित प्रकारों का एक पदानुक्रम प्रदान करता है। मुख्य समूहों में पहचान डेटा (नाम, उपनाम, उपयोगकर्ता नाम), संपर्क जानकारी (ईमेल, फ़ोन, पता) और क्रेडेंशियल (पासवर्ड, एक-बार कोड) शामिल हैं। प्रत्येक समूह विभिन्न ऑटोफिल तंत्रों को सक्रिय करता है।
संपर्क प्रकारों के समूह में `.emailAddress`, `.telephoneNumber`, `.fullStreetAddress` और `.city` शामिल हैं। ये प्रकार संपर्कों और iCloud Keychain से ऑटोफिल सक्रिय करते हैं। `.emailAddress` प्रकार वाला फ़ील्ड स्वचालित रूप से पहले दर्ज किए गए ईमेल पतों का सुझाव देता है, जबकि `.telephoneNumber` पता पुस्तिका से फ़ोन नंबर सुझाता है।
लॉगिन फ़ील्ड के लिए .username, .password और .newPassword अभिप्रेत हैं। .username प्रकार iCloud पासवर्ड प्रबंधक को सक्रिय करता है, जो सहेजे गए क्रेडेंशियल प्रदान करता है। .newPassword प्रकार वाला फ़ील्ड पहले इनपुट पर iCloud Keychain के माध्यम से मजबूत पासवर्ड जनरेशन आरंभ करता है।
iOS 17 से शुरू करके, Apple ने SMS पुष्टिकरण कोड के लिए .oneTimeCode और पार्सल ट्रैकिंग के लिए .shipmentTrackingNumber जोड़ा। .oneTimeCode प्रकार स्वचालित रूप से संदेशों से कोड पहचानता है और Messages ऐप खोलने की आवश्यकता के बिना उन्हें QuickType बार में प्रदान करता है।
| श्रेणी | प्रकार | iOS |
|---|---|---|
| पहचान | .name, .givenName, .familyName, .nickname | 5+ |
| संपर्क | .emailAddress, .telephoneNumber, .fullStreetAddress | 5+ |
| क्रेडेंशियल | .username, .password, .newPassword | 5+ |
| स्थान | .location, .city, .state, .postalCode | 10+ |
| कार्ड डेटा | .creditCardNumber, .creditCardSecurityCode | 12+ |
| एक-बार कोड | .oneTimeCode | 17+ |
प्रत्येक प्रकार को एक स्ट्रिंग स्थिरांक द्वारा दर्शाया जाता है, लेकिन उनकी तुलना rawValue के बजाय == ऑपरेटर के माध्यम से की जानी चाहिए। iOS भविष्य के संस्करणों में नए प्रकार जोड़ सकता है, इसलिए switch-case स्टेटमेंट में हमेशा default शाखा का उपयोग करें।
UIKeyboardType और UITextContentType एक साथ काम करते हैं: कीबोर्ड प्रकार कीबोर्ड लेआउट निर्धारित करता है, जबकि कंटेंट टाइप QuickType बार में अतिरिक्त बटन जोड़ता है। यदि कंटेंट टाइप सेट किया गया है, तो iOS इष्टतम इनपुट के लिए कीबोर्ड प्रकार को ओवरराइड कर सकता है। उदाहरण के लिए, `.emailAddress` प्रकार के साथ, कीबोर्ड स्वचालित रूप से मुख्य लेयर पर @ प्रतीक दिखाता है।
.telephoneNumber प्रकार वाले फ़ील्ड के लिए, iOS सेट किए गए कीबोर्ड प्रकार की परवाह किए बिना कीबोर्ड को फ़ोन लेआउट पर स्विच करता है। इस व्यवहार को अक्षम नहीं किया जा सकता — सिस्टम कंटेंट टाइप की प्राथमिकता को स्पष्ट कीबोर्ड कॉन्फ़िगरेशन से अधिक मानता है। डेवलपर्स को दोनों गुणों को कॉन्फ़िगर करने की आवश्यकता नहीं है।
.URL और .emailAddress प्रकार कीबोर्ड पर क्रमशः .com और @ बटन जोड़ते हैं। .creditCardNumber कंटेंट टाइप के साथ .decimalPad प्रकार दशमलव विभाजक के साथ एक संख्यात्मक कीबोर्ड दिखाता है, जो राशि और कार्ड नंबर दर्ज करने के लिए सुविधाजनक है। Apple Human Interface Guidelines के अनुसार, उपयोगकर्ता उम्मीद करता है कि कीबोर्ड दर्ज किए जा रहे डेटा के प्रकार से मेल खाता है, न कि इसके विपरीत।
एक अपवाद .oneTimeCode है — यह प्रकार कीबोर्ड लेआउट नहीं बदलता है लेकिन SMS से कोड के साथ QuickType बार को सक्रिय करता है। उपयोगकर्ता कीबोर्ड के ऊपर एक कोड सुझाव देखता है और इसे एक टैप से सम्मिलित कर सकता है। तंत्र केवल उन फ़ील्ड के लिए काम करता है जो SMS प्राप्त करने के बाद first responder बनते हैं।
iOS में ऑटोफिल इनपुट फ़ील्ड को iCloud Keychain और ASCredentialProviderViewController के डेटा से मिलाने के लिए Text Content Type का उपयोग करता है। सिस्टम स्क्रीन पर सभी फ़ील्ड का विश्लेषण करता है, उनके सिमैंटिक प्रकार निर्धारित करता है, और संबंधित सहेजा गया डेटा प्रदान करता है। सही ढंग से निर्दिष्ट प्रकारों के बिना, ऑटोफिल सक्रिय नहीं होता है।
ऑटोफिल के काम करने के लिए, तीन शर्तों को पूरा किया जाना चाहिए। पहला, फ़ील्ड में एक सही UITextContentType होना चाहिए। दूसरा, स्क्रीन में विभिन्न प्रकारों के कम से कम दो फ़ील्ड होने चाहिए (उदाहरण के लिए, .username और .password)। तीसरा, ऐप को वेबसाइट के साथ सिंक्रोनाइज़ेशन के लिए webcredentials एंटाइटलमेंट के साथ Associated Domains का समर्थन करना चाहिए।
कीचेन (Keychain) सहेजे गए रिकॉर्ड को वर्गीकृत करने के लिए कंटेंट टाइप का उपयोग करता है। यदि किसी फ़ील्ड को .password के रूप में चिह्नित किया गया है, तो सिस्टम दर्ज किए गए मान को iCloud Keychain में सहेजता है और अगले लॉगिन पर इसे प्रदान करता है। .creditCardNumber प्रकार वाले फ़ील्ड Face ID पुष्टि के बाद स्वचालित रूप से Wallet में सहेजे जाते हैं।
.oneTimeCode प्रकार वाले एक-बार कोड के लिए, iOS 17 नए AutoFill OTP तंत्र का उपयोग करता है, जिसे सीधे SMS एक्सेस की आवश्यकता नहीं होती है। सिस्टम ऑपरेटिंग सिस्टम स्तर पर संदेशों से कोड को इंटरसेप्ट करता है और ऐप द्वारा संदेश सामग्री पढ़ने को दरकिनार करते हुए उन्हें QuickType बार के माध्यम से ऐप में भेजता है।
Swift में Text Content Type का मूल कॉन्फ़िगरेशन कोड में textContentType प्रॉपर्टी के माध्यम से या Interface Builder के माध्यम से किया जाता है। कोड में, एक स्थिरांक निर्दिष्ट करने में एक पंक्ति लगती है, जबकि IB में वांछित प्रकार विशेषता निरीक्षक में ड्रॉपडाउन से चुना जाता है।
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"
let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword
ऑटोफिल के साथ प्रोग्रामेटिक लॉगिन फ़ॉर्म निर्माण के लिए, विभिन्न कंटेंट टाइप वाले दोनों फ़ील्ड का उपयोग करें। सिस्टम स्वचालित रूप से उन्हें लॉगिन और पासवर्ड के रूप में लिंक करता है। यदि ऐप बायोमेट्रिक लॉगिन का समर्थन करता है, तो सही खाता पहचान के लिए .username प्रकार वाला एक फ़ील्ड जोड़ें।
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 से एक-बार कोड इनपुट फ़ील्ड के लिए, .oneTimeCode प्रकार निर्दिष्ट करें। सिस्टम इसे प्राप्त करने के बाद स्वचालित रूप से QuickType बार में कोड सुझाएगा। डेवलपर को SMS पढ़ने की अनुमति का अनुरोध करने या कस्टम संदेश पार्सिंग लागू करने की आवश्यकता नहीं है।
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"
iOS 17+ के लिए, .oneTimeCode प्रकार फ़ील्ड फोकस के बिना स्वचालित भरने का समर्थन करता है। यदि उपयोगकर्ता कोड के साथ SMS प्राप्त करता है, तो iOS इसे लॉक स्क्रीन पर प्रदान करता है, और अनलॉक करने के बाद, कोड स्वचालित रूप से संबंधित कंटेंट टाइप वाले सक्रिय फ़ील्ड में डाला जाता है।
सही प्रकार चुनना सीधे फ़ॉर्म रूपांतरण और उपयोगकर्ता अनुभव को प्रभावित करता है। Apple उपलब्ध सबसे विशिष्ट प्रकार निर्दिष्ट करने की दृढ़ता से अनुशंसा करता है। उदाहरण के लिए, नाम फ़ील्ड के लिए सामान्य .name के बजाय .givenName का उपयोग करें — यह सिस्टम को सही नाम के साथ संपर्कों से ऑटोफिल सुझाने की अनुमति देता है।
एक सामान्य गलती से बचें — उपयोगकर्ता नाम फ़ील्ड के लिए .emailAddress सेट करना। यदि ऐप ईमेल को लॉगिन के रूप में उपयोग करता है, तो लॉगिन फ़ील्ड के लिए .username और पासवर्ड फ़ील्ड के लिए .password निर्दिष्ट करें। .emailAddress प्रकार विशेष रूप से पहचानकर्ता के रूप में नहीं, बल्कि संपर्क डेटा के रूप में ईमेल इनपुट के लिए अभिप्रेत है।
एक ही प्रकार के कई फ़ील्ड वाले फ़ॉर्म के लिए (उदाहरण के लिए, दो ईमेल पते), प्रत्येक फ़ील्ड के लिए .textContentType प्रॉपर्टी सेट करें लेकिन अलग-अलग accessibilityIdentifier मान जोड़ें। यह VoiceOver को फ़ील्ड की सही घोषणा करने में मदद करता है, हालाँकि ऑटोफिल सिस्टम दोनों फ़ील्ड के लिए समान मान सुझा सकता है।
भरी हुई कीचेन वाले वास्तविक डिवाइस पर ऑटोफिल का परीक्षण करें। सिम्युलेटर पूरी तरह से iCloud Keychain का समर्थन नहीं करता है, और ऑटोफिल व्यवहार भिन्न हो सकता है। Apple Developer Forums (2025) के अनुसार, सबसे आम ऑटोफिल समस्याएं गलत तरीके से निर्दिष्ट कंटेंट टाइप के कारण उत्पन्न होती हैं।
अक्सर पूछे जाने वाले प्रश्न
UITextContentType सिमैंटिक डेटा प्रकार को परिभाषित करता है, जबकि UIKeyboardType कीबोर्ड लेआउट को परिभाषित करता है। कंटेंट टाइप इष्टतम इनपुट के लिए कीबोर्ड टाइप को ओवरराइड कर सकता है।
ऑटोफिल .username, .password, .newPassword, .emailAddress, .telephoneNumber और .creditCardNumber प्रकारों द्वारा सक्रिय किया जाता है। सिस्टम इन प्रकारों को कीचेन के डेटा से मैप करता है।
हाँ, WKWebView autocomplete विशेषता वाले HTML फ़ील्ड के लिए Text Content Type का समर्थन करता है। iOS स्वचालित रूप से autocomplete विशेषताओं को UITextContentType प्रकारों से मैप करता है।
हाँ, UITextView भी UITextInputTraits को इनहेरिट करता है और textContentType प्रॉपर्टी का समर्थन करता है। यह संपर्क डेटा के लिए मल्टीलाइन इनपुट फ़ील्ड के लिए उपयोगी है।
सिस्टम ऑटोफिल के लिए गलत डेटा सुझा सकता है या कुछ भी नहीं सुझा सकता है। उदाहरण के लिए, .emailAddress प्रकार वाला उपयोगकर्ता नाम फ़ील्ड लॉगिन के बजाय ईमेल सुझा सकता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें