অটোক্যাপিটালাইজেশন হল iOS-এর একটি মেকানিজম যা নির্দিষ্ট প্রসঙ্গে ইনপুট টেক্সটের প্রথম অক্ষর স্বয়ংক্রিয়ভাবে বড় হাতের অক্ষরে রূপান্তর করে। UIKit UITextInputTraits প্রোটোকলে autocapitalizationType প্রপার্টি চারটি মোড সহ প্রদান করে: none, words, sentences এবং allCharacters। Apple Text Programming Guide (2025) অনুসারে, অটোক্যাপিটালাইজেশনের সঠিক কনফিগারেশন ব্যবহারকারীর অভিজ্ঞতা উন্নত করে এবং ইনপুটের সময় ম্যানুয়াল সংশোধনের সংখ্যা হ্রাস করে। বেশিরভাগ টেক্সট ফিল্ডের জন্য sentences মোড এবং ব্যবহারকারীর নাম ও পাসওয়ার্ডের জন্য none মোড ব্যবহার করুন।
মূল বিষয়বস্তু
অটোক্যাপিটালাইজেশন হল iOS অপারেটিং সিস্টেমের একটি বৈশিষ্ট্য যা নির্দিষ্ট শর্ত পূরণ হলে টেক্সটের প্রথম অক্ষর স্বয়ংক্রিয়ভাবে বড় হাতের অক্ষরে রূপান্তর করে। মেকানিজমটি autocapitalizationType প্রপার্টির মাধ্যমে নিয়ন্ত্রিত হয়, যা UITextInputTraits প্রোটোকল বাস্তবায়নকারী সমস্ত উপাদানের জন্য উপলব্ধ: UITextField, UITextView এবং UISearchBar।
বৈশিষ্ট্যটি iOS টেক্সট ইঞ্জিন স্তরে কাজ করে এবং প্রতিটি অক্ষর ইনপুট করার মুহূর্তে সক্রিয় হয়। সিস্টেম কার্সারের অবস্থান এবং আশেপাশের টেক্সট বিশ্লেষণ করে নির্ধারণ করে যে বর্তমান ইনপুট অক্ষরটিকে বড় করতে হবে কিনা। যদি শর্ত পূরণ হয়, iOS স্বয়ংক্রিয়ভাবে ছোট হাতের অক্ষরটিকে বড় হাতের অক্ষর দিয়ে প্রতিস্থাপন করে ফিল্ডে প্রদর্শিত হওয়ার আগে।
Apple Human Interface Guidelines (2025) অনুসারে, অটোক্যাপিটালাইজেশন একটি বিস্তৃত পূর্বাভাসমূলক ইনপুট সিস্টেমের অংশ যা অটোকারেকশন এবং পূর্বাভাসমূলক টেক্সট ইনপুটও অন্তর্ভুক্ত করে। ব্যবহারকারী সিস্টেম সেটিংসে (সেটিংস > সাধারণ > কীবোর্ড) এই সমস্ত বৈশিষ্ট্য বিশ্বব্যাপী বন্ধ করতে পারেন, তবে ডেভেলপার নির্দিষ্ট ফিল্ড স্তরেও সেগুলি নিয়ন্ত্রণ করে।
অটোকারেকশনের বিপরীতে, অটোক্যাপিটালাইজেশন ভাষা মডেল ব্যবহার করে না — এটি সহজ নিয়মে কাজ করে: বিন্দু এবং স্থানের পরে, টেক্সটের শুরুতে, নতুন লাইন অক্ষরের পরে। ব্যতিক্রম হল words মোড, যেখানে প্রসঙ্গ নির্বিশেষে প্রতিটি শব্দের প্রথম অক্ষর বড় হয়।
UITextAutocapitalizationType হল চারটি মানের একটি গণনা যা স্বয়ংক্রিয় কেস রূপান্তর কৌশল নির্ধারণ করে। প্রতিটি মোড একটি নির্দিষ্ট ধরণের টেক্সট ফিল্ডের জন্য ডিজাইন করা হয়েছে এবং একটি নির্দিষ্ট ব্যবহারকারীর অভিজ্ঞতার কাজ সমাধান করে।
.none মোড স্বয়ংক্রিয় কেস রূপান্তর সম্পূর্ণরূপে বন্ধ করে দেয়। সমস্ত অক্ষর ব্যবহারকারী যেভাবে টাইপ করে সেভাবেই ইনপুট হয়। এই মোড পাসওয়ার্ড ফিল্ড, ইমেইল ঠিকানা, ডাকনাম, অনুসন্ধান কোয়েরি এবং যেকোনো ফিল্ডের জন্য বাধ্যতামূলক যেখানে সার্ভার-সাইড ডেটা প্রক্রিয়াকরণের জন্য কেস গুরুত্বপূর্ণ।
.words মোড প্রতিটি ইনপুট শব্দের প্রথম অক্ষর বড় করে। সিস্টেম স্পেস দ্বারা শব্দের সীমানা নির্ধারণ করে এবং স্পেসের পরে প্রথম অক্ষরটিকে বড় হাতের অক্ষরে রূপান্তর করে। এই মোড নাম, পদবি, শহরের নাম, রাস্তার নাম এবং অন্যান্য ফিল্ডের জন্য সুবিধাজনক যেখানে প্রতিটি শব্দ বড় অক্ষর দিয়ে শুরু হওয়া উচিত।
.sentences মোড সবচেয়ে সাধারণ এবং বেশিরভাগ টেক্সট ফিল্ডের জন্য ডিফল্টরূপে ব্যবহৃত হয়। সিস্টেম বিন্দু, বিস্ময়সূচক চিহ্ন বা প্রশ্নবোধক চিহ্নের পরে প্রথম অক্ষর বড় করে যার পরে একটি স্পেস থাকে। এই মোড নোট, বার্তা, মন্তব্য এবং অন্যান্য বহু-লাইন টেক্সট ফিল্ডের জন্য আদর্শ।
.allCharacters মোড সমস্ত ইনপুট অক্ষরকে বড় হাতের অক্ষরে রূপান্তর করে। এই মোড ক্রমাগত Caps Lock চেপে রাখার সমতুল্য এবং ফিল্ডের জন্য ব্যবহৃত হয় যেখানে ডেটা বড় হাতের অক্ষরে থাকা উচিত: ডাক কোড, দেশের কোড, সংক্ষিপ্ত রূপ, অর্ডার নম্বর। সতর্কতার সাথে ব্যবহার করুন, কারণ বড় হাতের অক্ষরে টেক্সট পড়া কঠিন।
| মোড | বিবরণ | ইনপুট উদাহরণ | সুপারিশ |
|---|---|---|---|
| .none | কোনো পরিবর্তন নেই | karim@mail.com | ইমেইল, পাসওয়ার্ড, অনুসন্ধান |
| .words | প্রতিটি শব্দ | করিম হাসান | নাম, ঠিকানা, শহর |
| .sentences | বাক্যের শুরু | হ্যালো। কেমন আছেন? | বার্তা, নোট |
| .allCharacters | সমস্ত বড় অক্ষর | ABC-123 | কোড, সূচক |
অটোক্যাপিটালাইজেশন মেকানিজম কী প্রেস প্রক্রিয়াকরণের সময় সক্রিয় হয়, স্ক্রিনে অক্ষর প্রদর্শিত হওয়ার আগে। যখন ব্যবহারকারী একটি কী চাপেন, UITextInputTraits বর্তমান কার্সার অবস্থান পরীক্ষা করে এবং নির্ধারিত autocapitalizationType অনুসারে কেস রূপান্তর নিয়ম প্রয়োগ করে।
.sentences মোডের জন্য, সিস্টেম ট্রিগার অক্ষর ট্র্যাক করে: বিন্দু (.), বিস্ময়সূচক চিহ্ন (!), প্রশ্নবোধক চিহ্ন (?), এবং নতুন লাইন অক্ষর ( ) যখন সক্ষম। একটি ট্রিগার অক্ষর এবং পরবর্তী স্পেস সনাক্ত করার পর, সিস্টেম পরবর্তী ইনপুট অক্ষরের জন্য “বড় অক্ষর প্রত্যাশিত” ফ্ল্যাগ সেট করে।
.words মোড স্পেস অক্ষরকে ট্রিগার হিসাবে ট্র্যাক করে। প্রতিটি স্পেসের পরে, সিস্টেম পরবর্তী শব্দের জন্য একটি বড় অক্ষর প্রত্যাশা করে। তবে, ব্যতিক্রম রয়েছে: হাইফেন, অ্যাপোস্ট্রফি এবং শব্দের মধ্যে অন্যান্য বিরাম চিহ্নের পরে, বড় অক্ষর ঢোকানো হয় না। উদাহরণস্বরূপ, “O’Brien” সঠিক থাকবে।
একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল যে অটোক্যাপিটালাইজেশন শুধুমাত্র একটি শব্দের প্রথম অক্ষরে কাজ করে। যদি ব্যবহারকারী মাঝখানে বড় অক্ষরযুক্ত একটি শব্দ ইনপুট করেন (যেমন iPhone বা macOS), সিস্টেম সেগুলি পরিবর্তন করে না, কারণ রূপান্তর শুধুমাত্র ট্রিগারের পরে প্রথম অক্ষরে প্রয়োগ হয়। এর মানে হল অ-মানক কেসযুক্ত ব্র্যান্ড এবং পণ্যের নাম প্রভাবিত হবে না।
অটোক্যাপিটালাইজেশন বন্ধ করা উচিত ফিল্ডে যেখানে সঠিক ডেটা প্রক্রিয়াকরণের জন্য অক্ষর কেস গুরুত্বপূর্ণ। সাধারণ ক্ষেত্রে: ইমেইল ঠিকানা ফিল্ড, ডাকনাম এবং ব্যবহারকারীর নাম, পাসওয়ার্ড, অনুসন্ধান কোয়েরি, URL, নিশ্চিতকরণ কোড, IMEI এবং সিরিয়াল নম্বর। এই সমস্ত ক্ষেত্রে, স্বয়ংক্রিয় কেস পরিবর্তন সার্ভার-সাইড প্রক্রিয়াকরণের সময় ত্রুটির কারণ হবে।
অনুসন্ধান ফিল্ডের (UISearchBar) জন্য, অটোক্যাপিটালাইজেশন ডিফল্টরূপে বন্ধ থাকে, যা ব্যবহারকারীর প্রত্যাশার সাথে মেলে। একটি অনুসন্ধান কোয়েরি যেকোনো কেসে ইনপুট করা যেতে পারে এবং সার্ভার সাধারণত এটি নিজেই ছোট হাতের অক্ষরে রূপান্তর করে। যদি অনুসন্ধানের জন্য অটোক্যাপিটালাইজেশন সক্ষম করা হয়, ব্যবহারকারীকে প্রতিটি কোয়েরির শুরুতে ম্যানুয়ালি বড় অক্ষর সংশোধন করতে হবে।
নিবন্ধন ফর্মে, ব্যবহারকারীর নাম বা ডাকনাম ফিল্ডে .none মোড থাকা উচিত, কারণ অনেক সিস্টেম ব্যবহারকারীর নামে কেস পার্থক্য করে। ইমেইল ফিল্ডও অটোক্যাপিটালাইজেশন ছাড়া হওয়া উচিত — যদিও ডোমেইন নাম কেস-সংবেদনশীল নয়, ইমেইলের স্থানীয় অংশ তাত্ত্বিকভাবে কেস-সংবেদনশীল হতে পারে, যদিও বাস্তবে এটি বিরল।
Apple Developer Documentation অনুসারে, secureTextEntry (পাসওয়ার্ড) সহ ফিল্ডগুলি স্বয়ংক্রিয়ভাবে autocapitalizationType = .none উত্তরাধিকার সূত্রে পায়, এমনকি যদি ডেভেলপার স্পষ্টভাবে একটি ভিন্ন মান সেট করে থাকেন। সিস্টেমের সুরক্ষিত ইনপুটের জন্য সর্বোচ্চ অগ্রাধিকার রয়েছে এবং পাসওয়ার্ড ফিল্ডের জন্য অটোক্যাপিটালাইজেশন সক্ষম করার যেকোনো প্রচেষ্টা উপেক্ষা করে।
Swift-এ অটোক্যাপিটালাইজেশন কনফিগার করা autocapitalizationType প্রপার্টির মাধ্যমে করা হয়। প্রপার্টিটি UITextField, UITextView এবং UISearchBar-এর জন্য উপলব্ধ। মান কোডে এবং Interface Builder-এর মাধ্যমে অ্যাট্রিবিউট ইন্সপেক্টরে সেট করা যেতে পারে, যেখানে মোডটিকে Capitalization বলা হয়।
let nameField = UITextField()
nameField.autocapitalizationType = .words
let emailField = UITextField()
emailField.autocapitalizationType = .none
যোগাযোগ ফর্মের জন্য, প্রতিটি ফিল্ড তার অর্থ অনুসারে কনফিগার করুন: নাম — .words, ইমেইল — .none, বার্তা — .sentences। এই সংমিশ্রণটি সর্বোত্তম ব্যবহারকারীর অভিজ্ঞতা প্রদান করে এবং ম্যানুয়াল কেস সংশোধনের প্রয়োজনীয়তা হ্রাস করে।
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
}
}
রানটাইমে প্রোগ্রামেটিক মোড পরিবর্তনের জন্য, UITextFieldDelegate ডেলিগেট ব্যবহার করুন। উদাহরণস্বরূপ, যদি একটি ফিল্ড বিভিন্ন প্রসঙ্গে ব্যবহার করা যেতে পারে, ফর্মের বর্তমান অপারেশন মোড অনুসারে textFieldDidBeginEditing পদ্ধতিতে autocapitalizationType পরিবর্তন করুন।
func textFieldDidBeginEditing(_ textField: UITextField) {
if textField === codeField {
textField.autocapitalizationType = .allCharacters
}
}
অটোক্যাপিটালাইজেশন ব্যবহারকারীর কীবোর্ডে সেট করা ইনপুট ভাষার উপর নির্ভর করে। বিভিন্ন ভাষার কেস রূপান্তরের বিভিন্ন নিয়ম থাকতে পারে। উদাহরণস্বরূপ, তুর্কিতে, অক্ষর “i” বড় কেসে “İ” (বিন্দু সহ) হয়ে যায়, যখন “I” ছোট কেসে “ı” (বিন্দু ছাড়া) হয়ে যায়। iOS স্বয়ংক্রিয়ভাবে এই বৈশিষ্ট্যগুলি পরিচালনা করে।
রুশ ভাষার জন্য, অটোক্যাপিটালাইজেশন ইংরেজির মতো একই নিয়ম অনুসরণ করে: বিন্দুর পরে বড় অক্ষর, বাক্যের শুরুতে এবং নতুন লাইনের পরে। “yo” অক্ষরের সাথে সমস্যা দেখা দিতে পারে — যদিও এটি সিস্টেম অভিধানে উপস্থিত, সমস্ত কীবোর্ড লেআউট এটি প্রধান স্তরে প্রদর্শন করে না, এবং অটোক্যাপিটালাইজেশন “yo” কে “Yo”-এ সঠিকভাবে রূপান্তর করে।
চীনা, জাপানি এবং কোরিয়ান ভাষার জন্য, অটোক্যাপিটালাইজেশন প্রযোজ্য নয়, কারণ এই ভাষাগুলিতে কেসের কোনো ধারণা নেই। সংশ্লিষ্ট কীবোর্ড ব্যবহার করার সময় সিস্টেম দ্বারা autocapitalizationType মোড উপেক্ষা করা হয়, এবং ফিল্ড নির্ধারিত মান নির্বিশেষে .none মোডের মতো আচরণ করে।
আরবি এবং হিব্রু ভাষার জন্য, অটোক্যাপিটালাইজেশনও প্রযোজ্য নয়, কারণ এই ভাষাগুলি ছোট এবং বড় অক্ষরের পার্থক্য ছাড়াই তাদের নিজস্ব লেখার পদ্ধতি ব্যবহার করে। iOS সিস্টেম সঠিকভাবে ইনপুট ভাষা সনাক্ত করে এবং যে ভাষাগুলিতে এই ধারণাটি বিদ্যমান নেই সেগুলির জন্য অটোক্যাপিটালাইজেশন সেটিংস উপেক্ষা করে।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
হ্যাঁ, autocapitalizationType প্রপার্টি যেকোনো সময় পরিবর্তন করা যেতে পারে, এমনকি ফিল্ড সক্রিয় থাকলেও। পরিবর্তনটি পরবর্তী অক্ষর ইনপুটে কার্যকর হবে।
হ্যাঁ, isSecureTextEntry = true সহ ফিল্ডের জন্য, সিস্টেম স্বয়ংক্রিয়ভাবে autocapitalizationType = .none সেট করে। এই আচরণ প্রোগ্রামেটিকভাবে পরিবর্তন করা যাবে না।
হ্যাঁ, UITextView সম্পূর্ণরূপে autocapitalizationType সমর্থন করে। এটি বিশেষ করে বহু-লাইন ফিল্ডের জন্য উপযোগী যেখানে .sentences মোড সবচেয়ে স্বাভাবিকভাবে কাজ করে।
যদি একটি ফিল্ড secureTextEntry হিসাবে চিহ্নিত না হয় কিন্তু পাসওয়ার্ড ইনপুটের জন্য ব্যবহৃত হয়, অটোক্যাপিটালাইজেশন পাসওয়ার্ড পরিবর্তন করতে পারে। যেসব ফিল্ডে কেস গুরুত্বপূর্ণ সেখানের জন্য সবসময় এটি বন্ধ করুন।
সিমুলেটরে, অটোক্যাপিটালাইজেশন Mac হার্ডওয়্যার কীবোর্ডের মাধ্যমে কাজ করে এবং ভিন্নভাবে আচরণ করতে পারে। সঠিক আচরণের জন্য বাস্তব ডিভাইসে পরীক্ষা করুন।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন