Text Content Type হল একটি iOS প্রক্রিয়া যা সিস্টেমকে জানায় যে একটি টেক্সট ফিল্ড কোন ডেটা expects করে। UIKit ইনপুট ফিল্ড চিহ্নিত করার জন্য UITextContentType কনস্ট্যান্ট প্রদান করে: ইমেল, পাসওয়ার্ড, ফোন, ইউজারনেম এবং ডজন ডজন অন্যান্য সিম্যান্টিক প্রকার। Apple Human Interface Guidelines (2025) অনুসারে, সঠিক কন্টেন্ট টাইপ কনফিগারেশন অটোফিল এবং অভিযোজিত কীবোর্ডের মাধ্যমে ফর্ম পূরণের গতি 40% পর্যন্ত বাড়ায়। প্রতিটি টেক্সট ফিল্ডে UITextContentType ব্যবহার করুন — এটি ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং ইনপুট ত্রুটি হ্রাস করে।
মূল বিষয়
Text Content Type (UITextContentType) হল UIKit টেক্সট ফিল্ডের একটি বৈশিষ্ট্য যা iOS-কে বলে যে ইনপুট ফিল্ড কোন সিম্যান্টিক ডেটা expects করে। সিস্টেম এই তথ্য দুটি উদ্দেশ্যে ব্যবহার করে: উপযুক্ত কীবোর্ড লেআউট নির্বাচন করা এবং কীচেন (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 অনুসারে, ব্যবহারকারীরা expects করে যে কীবোর্ড প্রবেশ করা ডেটার প্রকারের সাথে মেলে, উল্টো নয়।
একটি ব্যতিক্রম হল .oneTimeCode — এই প্রকার কীবোর্ড লেআউট পরিবর্তন করে না কিন্তু SMS থেকে কোড সহ QuickType বার সক্রিয় করে। ব্যবহারকারী কীবোর্ডের উপরে একটি কোড suggestion দেখে এবং একটি ট্যাপ দিয়ে এটি সন্নিবেশ করতে পারে। প্রক্রিয়াটি শুধুমাত্র সেই ফিল্ডগুলির জন্য কাজ করে যা 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 অটোকমপ্লিট অ্যাট্রিবিউট সহ HTML ফিল্ডের জন্য Text Content Type সমর্থন করে। iOS স্বয়ংক্রিয়ভাবে অটোকমপ্লিট অ্যাট্রিবিউটগুলিকে UITextContentType প্রকারের সাথে ম্যাপ করে।
হ্যাঁ, UITextView-ও UITextInputTraits উত্তরাধিকার সূত্রে পায় এবং textContentType বৈশিষ্ট্য সমর্থন করে। এটি যোগাযোগের ডেটার জন্য মাল্টিলাইন ইনপুট ফিল্ডের জন্য দরকারী।
সিস্টেম অটোফিলের জন্য ভুল ডেটা সুপারিশ করতে পারে বা কিছুই সুপারিশ নাও করতে পারে। উদাহরণস্বরূপ, .emailAddress প্রকারের একটি ইউজারনেম ফিল্ড লগইনের পরিবর্তে একটি ইমেল সুপারিশ করতে পারে।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন