Autocorrection یک مکانیزم داخلی iOS است که به طور خودکار اشتباهات املایی را هنگام وارد کردن متن تصحیح میکند. UIKit رفتار تصحیح خودکار را از طریق ویژگی autocorrectionType در پروتکل UITextInputTraits مدیریت میکند و از سه حالت پشتیبانی میکند: پیشفرض، فعال و غیرفعال. بر اساس Apple Text Programming Guide (2025)، تصحیح خودکار متن وارد شده را بر اساس فرهنگ لغت سیستم و یادگیری ماشین روی دستگاه تحلیل میکند. برای هر فیلد متنی جداگانه از autocorrectionType استفاده کنید — این امکان را میدهد که رفتار را با ویژگی دادههای وارد شده تطبیق دهید.
نکات اصلی
Autocorrection (تصحیح خودکار) یک ویژگی سیستم عامل iOS است که به طور خودکار کلمات وارد شده را در صورت تشخیص اشتباه املایی با گزینههای احتمالی صحیح جایگزین میکند. این مکانیزم در سطح فیلدهای متنی UIKit کار میکند و در همه برنامههایی که از عناصر استاندارد UITextField و UITextView استفاده میکنند در دسترس است.
اساس تصحیح خودکار مدل زبانی است که روی میلیونها نمونه متنی برای هر زبان پشتیبانی شده آموزش دیده است. مدل کاملاً روی دستگاه (on-device) کار میکند که محرمانگی دادههای وارد شده را تضمین میکند — متن برای تحلیل به سرورهای Apple ارسال نمیشود. با هر بهروزرسانی iOS، مدل دقیقتر و با کلمات و قوانین جدید گسترش مییابد.
تصحیح خودکار به طور خودکار برای همه فیلدهای متنی فعال میشود، مگر اینکه توسعهدهنده صریحاً آن را غیرفعال کرده باشد. کاربر میتواند تصحیح خودکار را در تنظیمات سیستم (تنظیمات > عمومی > صفحه کلید > تصحیح خودکار) کاملاً غیرفعال کند، اما توسعهدهنده نیز میتواند این رفتار را برای فیلدهای جداگانه از طریق ویژگی autocorrectionType مدیریت کند.
بر اساس WWDC 2023 Session 204، Apple یک مدل زبانی تصحیح خودکار بهبود یافته مبتنی بر Transformer معرفی کرد که زمینه کل جمله را در نظر میگیرد، نه فقط آخرین کلمه را. این امر باعث کاهش ۳۰٪ تصحیحات نادرست در مقایسه با مدل قبلی مبتنی بر n-gram شده است.
UITextAutocorrectionType یک شمارش با سه مقدار است که رفتار تصحیح خودکار را برای یک فیلد متنی خاص تعیین میکند. هر مقدار از طریق ویژگی autocorrectionType تنظیم میشود که در Interface Builder و در کد هنگام ایجاد فیلد در دسترس است.
مقدار .default به این معنی است که فیلد تنظیم سراسری تصحیح خودکار را از پارامترهای سیستم صفحه کلید به ارث میبرد. این حالت برای اکثر فیلدهای متنی توصیه میشود، زیرا به انتخاب کاربر احترام میگذارد. اگر کاربر تصحیح خودکار را در تنظیمات غیرفعال کرده باشد، فیلد با .default نیز از آن استفاده نخواهد کرد.
مقدار .yes تصحیح خودکار را برای فیلد صرفنظر از تنظیم سیستم اجباری میکند. این حالت فقط برای فیلدهایی باید استفاده شود که دقت املایی در آنها حیاتی است — مثلاً در ویرایشگرهای متن، فیلدهای یادداشت یا پیامها. Apple توصیه میکند .yes را با احتیاط به کار ببرید، زیرا فعالسازی اجباری ممکن است با انتظارات کاربر مغایرت داشته باشد.
مقدار .no تصحیح خودکار را برای یک فیلد خاص غیرفعال میکند. این حالت برای فیلدهای رمز عبور (secure text entry)، آدرسهای ایمیل، کدهای تأیید و جستجوها الزامی است. در این فیلدها تصحیح خودکار نه تنها بیفایده، بلکه مضر است — میتواند دادههای درست وارد شده را با دادههای اشتباه جایگزین کند.
| حالت | مقدار | توصیه |
|---|---|---|
| .default | تنظیم سیستم را به ارث میبرد | اکثر فیلدهای ورودی |
| .yes | اجباری فعال است | ویرایشگرهای متن، یادداشتها |
| .no | اجباری غیرفعال است | رمز عبور، ایمیل، جستجو، کدها |
مدل زبانی تصحیح خودکار iOS از ترکیبی از فرهنگ لغت ایستا و مدل یادگیرنده پویا استفاده میکند. فرهنگ لغت سیستم شامل رایجترین کلمات برای هر زبان است و مدل زبانی مبتنی بر Transformer زمینه و احتمال جایگزینی را تحلیل میکند. مدل بر اساس متون وارد شده توسط کاربر روی دستگاه آموزش میبیند.
کاربر میتواند از طریق تنظیمات صفحه کلید (تنظیمات > عمومی > صفحه کلید > جایگزینی متن) کلمات را به فرهنگ لغت شخصی اضافه کند. کلمات اضافه شده در iCloud ذخیره و از طریق همان Apple ID بین دستگاهها همگامسازی میشوند. سیستم کلمات موجود در فرهنگ لغت شخصی را تصحیح نخواهد کرد که برای نامها، برندها و اصطلاحات فنی مناسب است.
برای حوزههای خاص — پزشکی، حقوقی، فنی — فرهنگ لغت استاندارد ممکن است اصطلاحات کافی را نداشته باشد. در چنین برنامههایی توصیه میشود تصحیح خودکار را برای فیلدهای مربوطه غیرفعال کنید یا از جایگزینی متن سفارشی از طریق روش UIResponder .replacementDictionary برای iOS 17+ استفاده کنید.
بر اساس Apple Machine Learning Research (2024)، مدل جدید تصحیح خودکار مبتنی بر معماری Transformer تا ۱۰ توکن زمینه را پردازش میکند (در مقابل ۳ توکن در مدل قبلی)، که امکان تعیین دقیقتر قصد کاربر را فراهم میکند. مدل نه تنها املا، بلکه ساختار دستوری جمله را نیز در نظر میگیرد.
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 از طریق ویژگی autocorrectionType اشیاء UITextField و UITextView انجام میشود. این ویژگی هم برای خواندن و هم برای نوشتن در دسترس است و میتواند بسته به زمینه ورودی به صورت پویا تغییر کند. پیکربندی از طریق Interface Builder در بازرس ویژگیها با نام Correction در دسترس است.
let textField = UITextField()
textField.autocorrectionType = .no
برای فرم ورود، تصحیح خودکار باید برای فیلد رمز عبور غیرفعال و برای فیلد ورود به صورت پیشفرض فعال باشد. فیلد ایمیل نیز توصیه میشود بدون تصحیح خودکار باقی بماند، زیرا علامت @ و نام دامنهها اغلب به اشتباه جایگزین میشوند. برای فیلد username، اگر username یک کلمه قابل خواندن باشد، تصحیح خودکار میتواند فعال باشد.
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 پیکربندی تصحیح خودکار به طور مشابه انجام میشود. این به ویژه برای فیلدهای چندخطی نظر، پیام و یادداشت مهم است، جایی که تصحیح خودکار بیشترین سود را دارد، اما ممکن است هنگام وارد کردن اصطلاحات فنی یا کد ناراحتی ایجاد کند.
let textView = UITextView()
textView.autocorrectionType = .default
برای تغییر پویا تصحیح خودکار از نماینده UITextFieldDelegate استفاده کنید. متد textFieldDidBeginEditing هنگام فعال شدن فیلد فراخوانی میشود و در آن میتوان autocorrectionType را بسته به زمینه فعلی یا نقش فیلد که ممکن است در طول کار برنامه تغییر کند، تغییر داد.
تصحیح خودکار باید غیرفعال شود در فیلدهایی که دقت دادههای وارد شده حیاتی است و سیستم نمیتواند به درستی قصد کاربر را تعیین کند. موارد اصلی: فیلدهای رمز عبور و دادههای امن، فیلدهای آدرس ایمیل، نوارهای جستجو، فیلدهای کد و کد برنامهنویسی، و همچنین فیلدهایی با فرمتهای داده غیراستاندارد.
برای نوارهای جستجو (UISearchBar) تصحیح خودکار به طور پیشفرض غیرفعال است که با انتظارات کاربران مطابقت دارد. هنگام جستجو، کاربر ممکن است کلمات ناقص، اصطلاحات فنی یا جستجوهایی به زبانهای مختلف وارد کند و تصحیح خودکار فقط مزاحمت ایجاد میکند. به طور مشابه برای فیلدهای URL و نام دامنه.
در برنامههای پیامرسان و ارتباطی تصحیح خودکار معمولاً فعال است، اما هنگام وارد کردن زبان عامیانه، مخففها و واژگان غیررسمی ممکن است ناراحتی ایجاد کند. در چنین مواردی، کاربر میتواند تصحیح خودکار را از طریق تنظیمات صفحه کلید غیرفعال کند یا توسعهدهنده میتواند یک کلید تغییر را مستقیماً در رابط برنامه ارائه دهد.
بر اساس راهنمای رابط انسانی Apple، تصحیح خودکار باید برای هر فیلدی که دادههای وارد شده ممکن است در فرهنگ لغت سیستم یافت نشود غیرفعال شود: شماره سفارشات، کدهای رزرو، شناسهها، IMEI، آدرسهای MAC. اگر فیلد دادههای الفبایی-عددی را در قالبی غیراستاندارد میپذیرد — تصحیح خودکار را غیرفعال کنید.
سوالات متداول
غیرفعالسازی سراسری تصحیح خودکار برای یک برنامه وجود ندارد. باید autocorrectionType = .no را برای هر فیلد متنی جداگانه تنظیم کنید یا یک زیرکلاس از UITextField با مقدار بازنویسی شده ایجاد کنید.
شبیهساز از یک مدل ورودی ساده شده با صفحه کلید Mac استفاده میکند. مدل زبانی تصحیح خودکار در شبیهساز فعال نیست — برای آزمایش از دستگاه واقعی استفاده کنید.
کاربر میتواند از طریق تنظیمات > عمومی > صفحه کلید > جایگزینی متن کلمه اضافه کند. برای برنامه API برای افزودن برنامهریزی شده کلمات به فرهنگ لغت سیستم تصحیح خودکار وجود ندارد.
خیر، keyboardType بر تصحیح خودکار تأثیر نمیگذارد. حتی برای صفحه کلید .numberPad نیز تصحیح خودکار میتواند فعال باشد، اگر به طور صریح از طریق autocorrectionType غیرفعال نشده باشد.
صفحه کلیدهای شخص ثالث مکانیزمهای تصحیح خودکار خود را دارند و از UITextAutocorrectionType سیستمیک استفاده نمیکنند. رفتار بستگی به پیادهسازی صفحه کلید خاص دارد.
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید