Autocorrection — ماهیت، مکانیزم‌ها و UITextAutocorrectionType

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

Autocorrection یک مکانیزم داخلی iOS است که به طور خودکار اشتباهات املایی را هنگام وارد کردن متن تصحیح می‌کند. UIKit رفتار تصحیح خودکار را از طریق ویژگی autocorrectionType در پروتکل UITextInputTraits مدیریت می‌کند و از سه حالت پشتیبانی می‌کند: پیش‌فرض، فعال و غیرفعال. بر اساس Apple Text Programming Guide (2025)، تصحیح خودکار متن وارد شده را بر اساس فرهنگ لغت سیستم و یادگیری ماشین روی دستگاه تحلیل می‌کند. برای هر فیلد متنی جداگانه از autocorrectionType استفاده کنید — این امکان را می‌دهد که رفتار را با ویژگی داده‌های وارد شده تطبیق دهید.

نکات اصلی

  • Autocorrection — مکانیزم سیستمی iOS برای تصحیح خودکار اشتباهات املایی هنگام تایپ متن
  • UITextAutocorrectionType از سه حالت پشتیبانی می‌کند: .default، .yes و .no برای هر فیلد به صورت جداگانه
  • فرهنگ لغت تصحیح خودکار بر اساس فرهنگ لغت سیستم iOS و مدل زبانی آموزش دیده روی دستگاه ساخته می‌شود
  • Safe Keyboard — صفحه کلید امنی که تصحیح خودکار را برای فیلدهای رمز عبور و داده‌های مالی غیرفعال می‌کند
  • محلی‌سازی — تصحیح خودکار برای همه زبان‌های پشتیبانی شده صفحه کلید، از جمله چیدمان‌های اضافی کار می‌کند

Autocorrection چیست؟

Autocorrection (تصحیح خودکار) یک ویژگی سیستم عامل iOS است که به طور خودکار کلمات وارد شده را در صورت تشخیص اشتباه املایی با گزینه‌های احتمالی صحیح جایگزین می‌کند. این مکانیزم در سطح فیلدهای متنی UIKit کار می‌کند و در همه برنامه‌هایی که از عناصر استاندارد UITextField و UITextView استفاده می‌کنند در دسترس است.

اساس تصحیح خودکار مدل زبانی است که روی میلیون‌ها نمونه متنی برای هر زبان پشتیبانی شده آموزش دیده است. مدل کاملاً روی دستگاه (on-device) کار می‌کند که محرمانگی داده‌های وارد شده را تضمین می‌کند — متن برای تحلیل به سرورهای Apple ارسال نمی‌شود. با هر به‌روزرسانی iOS، مدل دقیق‌تر و با کلمات و قوانین جدید گسترش می‌یابد.

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

بر اساس WWDC 2023 Session 204، Apple یک مدل زبانی تصحیح خودکار بهبود یافته مبتنی بر Transformer معرفی کرد که زمینه کل جمله را در نظر می‌گیرد، نه فقط آخرین کلمه را. این امر باعث کاهش ۳۰٪ تصحیحات نادرست در مقایسه با مدل قبلی مبتنی بر n-gram شده است.

حالت‌های تصحیح خودکار در iOS

UITextAutocorrectionType یک شمارش با سه مقدار است که رفتار تصحیح خودکار را برای یک فیلد متنی خاص تعیین می‌کند. هر مقدار از طریق ویژگی autocorrectionType تنظیم می‌شود که در Interface Builder و در کد هنگام ایجاد فیلد در دسترس است.

حالت .default

مقدار .default به این معنی است که فیلد تنظیم سراسری تصحیح خودکار را از پارامترهای سیستم صفحه کلید به ارث می‌برد. این حالت برای اکثر فیلدهای متنی توصیه می‌شود، زیرا به انتخاب کاربر احترام می‌گذارد. اگر کاربر تصحیح خودکار را در تنظیمات غیرفعال کرده باشد، فیلد با .default نیز از آن استفاده نخواهد کرد.

حالت .yes

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

حالت .no

مقدار .no تصحیح خودکار را برای یک فیلد خاص غیرفعال می‌کند. این حالت برای فیلدهای رمز عبور (secure text entry)، آدرس‌های ایمیل، کدهای تأیید و جستجوها الزامی است. در این فیلدها تصحیح خودکار نه تنها بی‌فایده، بلکه مضر است — می‌تواند داده‌های درست وارد شده را با داده‌های اشتباه جایگزین کند.

حالتمقدارتوصیه
.defaultتنظیم سیستم را به ارث می‌برداکثر فیلدهای ورودی
.yesاجباری فعال استویرایشگرهای متن، یادداشت‌ها
.noاجباری غیرفعال استرمز عبور، ایمیل، جستجو، کدها

مدل زبانی و فرهنگ لغت

مدل زبانی تصحیح خودکار iOS از ترکیبی از فرهنگ لغت ایستا و مدل یادگیرنده پویا استفاده می‌کند. فرهنگ لغت سیستم شامل رایج‌ترین کلمات برای هر زبان است و مدل زبانی مبتنی بر Transformer زمینه و احتمال جایگزینی را تحلیل می‌کند. مدل بر اساس متون وارد شده توسط کاربر روی دستگاه آموزش می‌بیند.

کاربر می‌تواند از طریق تنظیمات صفحه کلید (تنظیمات > عمومی > صفحه کلید > جایگزینی متن) کلمات را به فرهنگ لغت شخصی اضافه کند. کلمات اضافه شده در iCloud ذخیره و از طریق همان Apple ID بین دستگاه‌ها همگام‌سازی می‌شوند. سیستم کلمات موجود در فرهنگ لغت شخصی را تصحیح نخواهد کرد که برای نام‌ها، برندها و اصطلاحات فنی مناسب است.

برای حوزه‌های خاص — پزشکی، حقوقی، فنی — فرهنگ لغت استاندارد ممکن است اصطلاحات کافی را نداشته باشد. در چنین برنامه‌هایی توصیه می‌شود تصحیح خودکار را برای فیلدهای مربوطه غیرفعال کنید یا از جایگزینی متن سفارشی از طریق روش UIResponder .replacementDictionary برای iOS 17+ استفاده کنید.

بر اساس Apple Machine Learning Research (2024)، مدل جدید تصحیح خودکار مبتنی بر معماری Transformer تا ۱۰ توکن زمینه را پردازش می‌کند (در مقابل ۳ توکن در مدل قبلی)، که امکان تعیین دقیق‌تر قصد کاربر را فراهم می‌کند. مدل نه تنها املا، بلکه ساختار دستوری جمله را نیز در نظر می‌گیرد.

Safe Keyboard و داده‌های محرمانه

Safe Keyboard یک حالت ورودی امن است که به طور خودکار برای فیلدهای دارای secureTextEntry = true فعال می‌شود. در این حالت، تصحیح خودکار، حروف بزرگ خودکار و ورودی پیش‌بینی‌شونده توسط سیستم صرف‌نظر از مقادیر تنظیم شده autocorrectionType غیرفعال می‌شوند. سیستم همچنین دسترسی به فرهنگ لغت شخصی و جایگزینی متن را مسدود می‌کند.

Safe Keyboard از نشت داده‌های وارد شده از طریق مکانیزم‌های تصحیح خودکار جلوگیری می‌کند. اگر تصحیح خودکار برای فیلد رمز عبور فعال بود، سیستم می‌توانست رمز عبور وارد شده را در فرهنگ لغت شخصی ذخیره کند یا برای آموزش مدل به سرورهای Apple ارسال کند. Safe Keyboard تضمین می‌کند که داده‌های محرمانه از محدوده برنامه خارج نشوند.

برای برنامه‌های مالی، Safe Keyboard فقط برای فیلدهای دارای secureTextEntry به طور خودکار فعال می‌شود. برای فیلدهای شماره کارت، تاریخ انقضا و کدهای CVV، توسعه‌دهنده باید به صورت دستی تصحیح خودکار را با تنظیم autocorrectionType = .no و keyboardType = .numberPad یا .phonePad غیرفعال کند.

از iOS 17 به بعد، Safe Keyboard از محافظت در برابر رهگیری توسط صفحه کلیدهای شخص ثالث پشتیبانی می‌کند. اگر کاربر صفحه کلیدی از App Store نصب کرده باشد، هنگام فعال شدن secureTextEntry، صفحه کلید سیستم به طور خودکار جایگزین صفحه کلید شخص ثالث می‌شود، حتی اگر به عنوان پیش‌فرض انتخاب شده باشد. این تضمین می‌کند که رمزهای عبور فقط از طریق صفحه کلید امن سیستم وارد می‌شوند.

پیکربندی از طریق کد Swift

مدیریت تصحیح خودکار در Swift از طریق ویژگی autocorrectionType اشیاء UITextField و UITextView انجام می‌شود. این ویژگی هم برای خواندن و هم برای نوشتن در دسترس است و می‌تواند بسته به زمینه ورودی به صورت پویا تغییر کند. پیکربندی از طریق Interface Builder در بازرس ویژگی‌ها با نام Correction در دسترس است.

swift
let textField = UITextField()
textField.autocorrectionType = .no

برای فرم ورود، تصحیح خودکار باید برای فیلد رمز عبور غیرفعال و برای فیلد ورود به صورت پیش‌فرض فعال باشد. فیلد ایمیل نیز توصیه می‌شود بدون تصحیح خودکار باقی بماند، زیرا علامت @ و نام دامنه‌ها اغلب به اشتباه جایگزین می‌شوند. برای فیلد username، اگر username یک کلمه قابل خواندن باشد، تصحیح خودکار می‌تواند فعال باشد.

swift
class RegistrationViewController: UIViewController {

    @IBOutlet var nameField: UITextField!
    @IBOutlet var emailField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        nameField.autocorrectionType = .yes
        emailField.autocorrectionType = .no
        emailField.textContentType = .emailAddress
    }
}

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

swift
let textView = UITextView()
textView.autocorrectionType = .default

برای تغییر پویا تصحیح خودکار از نماینده UITextFieldDelegate استفاده کنید. متد textFieldDidBeginEditing هنگام فعال شدن فیلد فراخوانی می‌شود و در آن می‌توان autocorrectionType را بسته به زمینه فعلی یا نقش فیلد که ممکن است در طول کار برنامه تغییر کند، تغییر داد.

چه زمانی تصحیح خودکار را غیرفعال کنیم

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

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

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

بر اساس راهنمای رابط انسانی Apple، تصحیح خودکار باید برای هر فیلدی که داده‌های وارد شده ممکن است در فرهنگ لغت سیستم یافت نشود غیرفعال شود: شماره سفارشات، کدهای رزرو، شناسه‌ها، IMEI، آدرس‌های MAC. اگر فیلد داده‌های الفبایی-عددی را در قالبی غیراستاندارد می‌پذیرد — تصحیح خودکار را غیرفعال کنید.

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

چگونه تصحیح خودکار را به طور کامل در کل برنامه غیرفعال کنیم؟

غیرفعال‌سازی سراسری تصحیح خودکار برای یک برنامه وجود ندارد. باید autocorrectionType = .no را برای هر فیلد متنی جداگانه تنظیم کنید یا یک زیرکلاس از UITextField با مقدار بازنویسی شده ایجاد کنید.

چرا تصحیح خودکار در شبیه‌ساز کار نمی‌کند؟

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

چگونه یک کلمه به فرهنگ لغت شخصی اضافه کنیم؟

کاربر می‌تواند از طریق تنظیمات > عمومی > صفحه کلید > جایگزینی متن کلمه اضافه کند. برای برنامه API برای افزودن برنامه‌ریزی شده کلمات به فرهنگ لغت سیستم تصحیح خودکار وجود ندارد.

آیا تنظیم keyboardType تصحیح خودکار را غیرفعال می‌کند؟

خیر، keyboardType بر تصحیح خودکار تأثیر نمی‌گذارد. حتی برای صفحه کلید .numberPad نیز تصحیح خودکار می‌تواند فعال باشد، اگر به طور صریح از طریق autocorrectionType غیرفعال نشده باشد.

آیا تصحیح خودکار برای صفحه کلیدهای شخص ثالث کار می‌کند؟

صفحه کلیدهای شخص ثالث مکانیزم‌های تصحیح خودکار خود را دارند و از UITextAutocorrectionType سیستمیک استفاده نمی‌کنند. رفتار بستگی به پیاده‌سازی صفحه کلید خاص دارد.

خلاصه

  • Autocorrection — ویژگی سیستمی iOS برای تصحیح خودکار اشتباهات املایی در فیلدهای متنی
  • سه حالت UITextAutocorrectionType: .default (به ارث بردن تنظیمات)، .yes (فعال)، .no (غیرفعال)
  • مدل زبانی Transformer تا ۱۰ توکن زمینه را پردازش می‌کند و کاملاً روی دستگاه کار می‌کند
  • Safe Keyboard به طور خودکار تصحیح خودکار را برای فیلدهای با secureTextEntry = true غیرفعال می‌کند
  • تصحیح خودکار بی‌فایده است برای فیلدهای رمز عبور، ایمیل، کدها، جستجو و فرمت‌های داده غیراستاندارد
  • پیکربندی از طریق ویژگی autocorrectionType برای هر فیلد به صورت جداگانه انجام می‌شود
  • توصیه — رفتار تصحیح خودکار را روی دستگاه واقعی با مدل زبانی فعال آزمایش کنید

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

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

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

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