Autocapitalization: چیست، انواع و UITextAutocapitalizationType

نویسنده: IT Sectr منتشر شده: 2026-07-08 زمان مطالعه: 7 دقیقه

Autocapitalization — مکانیزمی در iOS است که به طور خودکار اولین حرف متن وارد شده را در زمینه‌های خاص به حرف بزرگ تبدیل می‌کند. UIKit ویژگی autocapitalizationType را در پروتکل UITextInputTraits با چهار حالت ارائه می‌دهد: none، words، sentences و allCharacters. طبق Apple Text Programming Guide (2025)، تنظیم صحیح خودبزرگ‌سازی تجربه کاربری را بهبود می‌بخشد و تعداد تصحیحات دستی هنگام ورود را کاهش می‌دهد. برای اکثر فیلدهای متنی از حالت sentences و برای نام کاربری و رمز عبور از حالت none استفاده کنید.

نکات اصلی

  • Autocapitalization — تبدیل خودکار حرف اول به بزرگ در فیلدهای ورود UIKit
  • UITextAutocapitalizationType شامل چهار حالت است: none، words، sentences و allCharacters
  • حالت sentences — رایج‌ترین است، حرف اول هر جمله را بزرگ می‌کند
  • حالت words — حرف اول هر کلمه را بزرگ می‌کند، مناسب برای فیلدهای نام و نام خانوادگی
  • حالت none — برای فیلدهای رمز عبور، ایمیل، جستجو و کدهای تأیید اجباری است

Autocapitalization چیست؟

Autocapitalization (خودبزرگ‌سازی) — تابعی از سیستم عامل iOS است که به طور خودکار اولین کاراکتر متن را با وقوع شرایط خاص به حرف بزرگ تبدیل می‌کند. این مکانیزم از طریق ویژگی autocapitalizationType که برای تمام عناصر پیاده‌ساز پروتکل UITextInputTraits در دسترس است کنترل می‌شود: UITextField، UITextView و UISearchBar.

این تابع در سطح موتور متنی iOS کار می‌کند و در لحظه ورود هر کاراکتر فعال می‌شود. سیستم موقعیت مکان‌نما و متن اطراف را تحلیل می‌کند تا تعیین کند آیا کاراکتر جاری باید به بزرگ تبدیل شود یا خیر. اگر شرط برآورده شود، iOS به طور خودکار حرف کوچک را قبل از نمایش در فیلد با حرف بزرگ جایگزین می‌کند.

طبق Apple Human Interface Guidelines (2025)، خودبزرگ‌سازی بخشی از سیستم گسترده‌تر ورود پیش‌بینی‌کننده است که همچنین تصحیح خودکار و تایپ پیش‌بینی‌کننده را شامل می‌شود. کاربر می‌تواند تمام این توابع را به صورت سراسری در تنظیمات سیستم (تنظیمات > عمومی > صفحه‌کلید) غیرفعال کند، اما توسعه‌دهنده نیز آنها را در سطح فیلدهای خاص کنترل می‌کند.

بر خلاف تصحیح خودکار، خودبزرگ‌سازی از مدل زبانی استفاده نمی‌کند — طبق قوانین ساده کار می‌کند: بعد از نقطه و فاصله، ابتدای متن، بعد از نویسه خط جدید. استثنا حالت words است که در آن حرف اول هر کلمه بدون توجه به زمینه بزرگ می‌شود.

حالت‌های خودبزرگ‌سازی

UITextAutocapitalizationType — شمارشی از چهار مقدار است که استراتژی تبدیل خودکار حروف بزرگ و کوچک را تعیین می‌کند. هر حالت برای نوع خاصی از فیلدهای متنی در نظر گرفته شده است و وظیفه خاصی از تجربه کاربری را حل می‌کند.

None — بدون خودبزرگ‌سازی

حالت .none تبدیل خودکار حروف را به طور کامل غیرفعال می‌کند. تمام کاراکترها در همان بزرگی و کوچکی که کاربر تایپ می‌کند وارد می‌شوند. این حالت برای فیلدهای رمز عبور، آدرس ایمیل، نام کاربری، جستجو و هر فیلدی که اندازه حروف برای پردازش داده در سرور اهمیت دارد اجباری است.

Words — هر کلمه با حرف بزرگ

حالت .words حرف اول هر کلمه وارد شده را بزرگ می‌کند. سیستم مرز کلمه را با فاصله تعیین می‌کند و اولین کاراکتر بعد از فاصله را به بزرگ تبدیل می‌کند. این حالت برای فیلدهای نام، نام خانوادگی، نام شهرها، خیابان‌ها و سایر فیلدهایی که هر کلمه باید با حرف بزرگ شروع شود مناسب است.

Sentences — ابتدای جمله

حالت .sentences — رایج‌ترین است و به طور پیش‌فرض برای اکثر فیلدهای متنی استفاده می‌شود. سیستم حرف اول را بعد از نقطه، علامت تعجب یا علامت سؤال که به دنبال آن فاصله می‌آید بزرگ می‌کند. این حالت برای فیلدهای یادداشت، پیام، نظر و سایر متون چندخطی ایده‌آل است.

All Characters — همه حروف بزرگ

حالت .allCharacters تمام کاراکترهای وارد شده را به حروف بزرگ تبدیل می‌کند. این حالت معادل فشردن مداوم Caps Lock است و برای فیلدهایی استفاده می‌شود که داده‌ها باید با حروف بزرگ باشند: کدهای پستی، کد کشورها، اختصارات، شماره سفارشات. باید با احتیاط استفاده شود زیرا متن با حروف بزرگ خواندنش دشوارتر است.

حالتشرحمثال ورودتوصیه
.noneبدون تغییرjohn@mail.comایمیل، رمز، جستجو
.wordsهر کلمهعلی محمدینام، آدرس، شهر
.sentencesابتدای جملهسلام. حال شما؟پیام‌ها، یادداشت‌ها
.allCharactersهمه بزرگABC-123کدها، ایندکس‌ها

حرف بزرگ خودکار چگونه کار می‌کند

مکانیزم خودبزرگ‌سازی در مرحله پردازش فشار کلید، قبل از نمایش نویسه روی صفحه فعال می‌شود. هنگامی که کاربر کلیدی را فشار می‌دهد، UITextInputTraits موقعیت فعلی مکان‌نما را بررسی می‌کند و قانون تبدیل حروف را مطابق با autocapitalizationType تنظیم شده اعمال می‌کند.

برای حالت .sentences سیستم نویسه‌های ماشه‌ای را دنبال می‌کند: نقطه (.)، علامت تعجب (!)، علامت سؤال (؟)، و همچنین نویسه خط جدید ( ) در صورت فعال بودن حالت. پس از تشخیص نویسه ماشه‌ای و فاصله بعد از آن، سیستم پرچم “منتظر حرف بزرگ” را برای نویسه بعدی تنظیم می‌کند.

حالت .words نویسه فاصله را به عنوان ماشه دنبال می‌کند. بعد از هر فاصله سیستم برای کلمه بعدی حرف بزرگ را انتظار دارد. با این حال استثناهایی وجود دارد: بعد از خط تیره، آپاستروف و سایر علائم نگارشی داخل کلمه حرف بزرگ قرار نمی‌گیرد. به عنوان مثال، “O’Brien” صحیح باقی می‌ماند.

ویژگی مهم — خودبزرگ‌سازی فقط برای اولین نویسه کلمه کار می‌کند. اگر کاربر کلمه‌ای حاوی حروف بزرگ در وسط وارد کند (مثلاً iPhone یا macOS)، سیستم آنها را تغییر نمی‌دهد زیرا تبدیل فقط برای اولین نویسه بعد از ماشه اعمال می‌شود. این بدان معناست که نام برندها و محصولات با حروف غیراستاندارد آسیب نمی‌بینند.

چه زمانی خودبزرگ‌سازی را غیرفعال کنیم

خودبزرگ‌سازی باید غیرفعال شود در فیلدهایی که اندازه حروف برای پردازش صحیح داده مهم است. موارد اصلی: فیلدهای آدرس ایمیل، نام کاربری، رمز عبور، جستجو، آدرس URL، کد تأیید، IMEI و شماره سریال. در تمام این موارد تغییر خودکار حروف بزرگ منجر به خطا در پردازش سرور می‌شود.

برای نوار جستجو (UISearchBar) خودبزرگ‌سازی به طور پیش‌فرض غیرفعال است که مطابق انتظارات کاربران است. عبارت جستجو می‌تواند با هر اندازه حرفی وارد شود و سرور معمولاً آن را به طور خودکار به حروف کوچک تبدیل می‌کند. اگر خودبزرگ‌سازی را برای جستجو فعال کنید، کاربر هر بار مجبور می‌شود حرف بزرگ ابتدای عبارت را به صورت دستی اصلاح کند.

در فرم‌های ثبت‌نام فیلد username یا nickname باید حالت .none داشته باشد زیرا بسیاری از سیستم‌ها در نام کاربری بین حروف بزرگ و کوچک تفاوت قائل می‌شوند. فیلد ایمیل نیز باید بدون خودبزرگ‌سازی باشد — اگرچه نام دامنه به حروف بزرگ حساس نیست، بخش محلی ایمیل از نظر تئوری می‌تواند حروف بزرگ و کوچک را تشخیص دهد، هرچند در عمل به ندرت اتفاق می‌افتد.

طبق Apple Developer Documentation، فیلدهای secureTextEntry (رمز عبور) به طور خودکار autocapitalizationType = .none را به ارث می‌برند، حتی اگر توسعه‌دهنده به صراحت مقدار دیگری تعیین کرده باشد. سیستم برای ورود محافظت‌شده بالاترین اولویت را دارد و هرگونه تلاش برای فعال کردن خودبزرگ‌سازی برای فیلد رمز عبور را نادیده می‌گیرد.

مثال‌های تنظیم در Swift

تنظیم خودبزرگ‌سازی در Swift از طریق ویژگی autocapitalizationType انجام می‌شود. این ویژگی برای UITextField، UITextView و UISearchBar در دسترس است. مقدار را می‌توان هم در کد و هم از طریق Interface Builder در بازرس ویژگی‌ها تنظیم کرد، جایی که حالت Capitalization نامیده می‌شود.

swift
let nameField = UITextField()
nameField.autocapitalizationType = .words

let emailField = UITextField()
emailField.autocapitalizationType = .none

برای فرم تماس هر فیلد را مطابق با معنای آن تنظیم کنید: نام — .words، ایمیل — .none، پیام — .sentences. چنین ترکیبی بهترین تجربه کاربری را تضمین می‌کند و نیاز به تصحیح دستی حروف را به حداقل می‌رساند.

swift
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 استفاده کنید. به عنوان مثال، اگر یک فیلد می‌تواند در زمینه‌های مختلف استفاده شود، autocapitalizationType را در متد textFieldDidBeginEditing بسته به حالت فعلی فرم تغییر دهید.

swift
func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField === codeField {
        textField.autocapitalizationType = .allCharacters
    }
}

بومی‌سازی و خودبزرگ‌سازی

خودبزرگ‌سازی به زبان ورودی تنظیم شده روی صفحه‌کلید کاربر بستگی دارد. برای زبان‌های مختلف قوانین تبدیل حروف ممکن است متفاوت باشد. به عنوان مثال، در زبان ترکی حرف “i” با حرف بزرگ به “İ” (با نقطه) و “I” با حرف کوچک به “ı” (بدون نقطه) تبدیل می‌شود. iOS این ویژگی‌ها را به طور خودکار در نظر می‌گیرد.

برای زبان روسی خودبزرگ‌سازی طبق قوانین مشابه انگلیسی کار می‌کند: حرف بزرگ بعد از نقطه، ابتدای جمله و بعد از خط جدید. ممکن است با حرف “jo” مشکلاتی ایجاد شود — اگرچه در فرهنگ لغت سیستم وجود دارد، همه چیدمان‌های صفحه‌کلید آن را در لایه اصلی نمایش نمی‌دهند و خودبزرگ‌سازی آن را به درستی به بزرگ تبدیل می‌کند.

برای زبان‌های چینی، ژاپنی و کره‌ای خودبزرگ‌سازی اعمال نمی‌شود زیرا در این زبان‌ها مفهومی از حروف بزرگ و کوچک وجود ندارد. حالت autocapitalizationType هنگام استفاده از صفحه‌کلیدهای مربوطه توسط سیستم نادیده گرفته می‌شود و فیلد صرف نظر از مقدار تنظیم شده مانند حالت .none رفتار می‌کند.

برای زبان عربی و عبری نیز خودبزرگ‌سازی اعمال نمی‌شود زیرا این زبان‌ها از سیستم نوشتاری خود بدون تقسیم به حروف کوچک و بزرگ استفاده می‌کنند. سیستم iOS زبان ورودی را به درستی تشخیص می‌دهد و تنظیمات خودبزرگ‌سازی را برای زبان‌هایی که این مفهوم در آنها وجود ندارد نادیده می‌گیرد.

سوالات متداول

آیا می‌توان حالت خودبزرگ‌سازی را به صورت پویا تغییر داد؟

بله، ویژگی autocapitalizationType را می‌توان در هر لحظه، حتی زمانی که فیلد فعال است، تغییر داد. تغییر با ورود نویسه بعدی اعمال می‌شود.

آیا secureTextEntry خودبزرگ‌سازی را غیرفعال می‌کند؟

بله، برای فیلدهای با isSecureTextEntry = true سیستم به طور خودکار autocapitalizationType = .none را تنظیم می‌کند. تغییر این رفتار به صورت برنامه‌ای ممکن نیست.

آیا خودبزرگ‌سازی برای UITextView کار می‌کند؟

بله، UITextView به طور کامل از autocapitalizationType پشتیبانی می‌کند. این به ویژه برای فیلدهای چندخطی که حالت .sentences به طور طبیعی کار می‌کند مفید است.

خودبزرگ‌سازی چگونه بر رمز عبور تأثیر می‌گذارد؟

اگر فیلد به عنوان secureTextEntry مشخص نشده باشد اما برای ورود رمز عبور استفاده شود، خودبزرگ‌سازی می‌تواند رمز عبور را تغییر دهد. همیشه آن را در فیلدهایی که اندازه حروف مهم است غیرفعال کنید.

آیا بین شبیه‌ساز و دستگاه تفاوت وجود دارد؟

در شبیه‌ساز خودبزرگ‌سازی از طریق صفحه‌کلید فیزیکی Mac کار می‌کند و ممکن است متفاوت رفتار کند. برای رفتار صحیح روی دستگاه واقعی تست کنید.

خلاصه

  • Autocapitalization — تابع تبدیل خودکار اولین نویسه به حرف بزرگ در فیلدهای ورود iOS
  • چهار حالت UITextAutocapitalizationType: none، words، sentences، allCharacters
  • حالت .sentences برای اکثر فیلدها مناسب است، بعد از نقطه، !، ? و خط جدید فعال می‌شود
  • حالت .none برای ایمیل، رمز عبور، جستجو و فیلدهای حساس به حروف بزرگ اجباری است
  • حالت .words برای فیلدهای نام، نام خانوادگی، شهر و آدرس بهینه است
  • بومی‌سازی — برای زبان ترکی قانون خاص حرف İ/ı در نظر گرفته می‌شود
  • توصیه — خودبزرگ‌سازی را برای هر فیلد مطابق با معنای آن تنظیم کنید

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید