التصحيح التلقائي هي آلية مدمجة في iOS تقوم تلقائياً بتصحيح الأخطاء الإملائية عند إدخال النص. يدير UIKit سلوك التصحيح التلقائي من خلال الخاصية autocorrectionType في بروتوكول UITextInputTraits، ويدعم ثلاثة أوضاع: افتراضي، مفعل ومعطل. وفقاً لـ Apple Text Programming Guide (2025)، يحلل التصحيح التلقائي النص المُدخل بناءً على قاموس النظام والتعلم الآلي على الجهاز. استخدم autocorrectionType لكل حقل نصي على حدة — وهذا يسمح بتكييف السلوك مع خصوصية البيانات المُدخلة.
النقاط الرئيسية
التصحيح التلقائي هي ميزة من نظام التشغيل iOS تقوم تلقائياً باستبدال الكلمات المكتوبة ببدائل صحيحة مفترضة عند اكتشاف خطأ إملائي. تعمل الآلية على مستوى حقول النص في UIKit وهي متوفرة في جميع التطبيقات التي تستخدم عناصر الإدخال القياسية UITextField و UITextView.
في جوهر التصحيح التلقائي يوجد نموذج لغوي مدرب على ملايين الأمثلة النصية لكل لغة مدعومة. يعمل النموذج بالكامل على الجهاز (on-device)، مما يضمن سرية البيانات المُدخلة — لا يتم إرسال النص إلى خوادم Apple للتحليل. مع كل تحديث لنظام iOS، يتم تحسين النموذج وتوسيعه بكلمات وقواعد جديدة.
يتم تنشيط التصحيح التلقائي تلقائياً لجميع حقول النص ما لم يعطلها المطور صراحةً. يمكن للمستخدم تعطيل التصحيح التلقائي بالكامل في إعدادات النظام (الإعدادات > عام > لوحة المفاتيح > التصحيح التلقائي)، ولكن يمكن للمطور أيضاً التحكم في هذا السلوك للحقول الفردية من خلال الخاصية autocorrectionType.
وفقاً لجلسة WWDC 2023 رقم 204، قدمت Apple نموذجاً محسناً للتصحيح التلقائي يعتمد على Transformer، والذي يأخذ في الاعتبار سياق الجملة بأكملها وليس فقط الكلمة الأخيرة. أدى ذلك إلى تقليل التصحيحات الخاطئة بنسبة 30% مقارنة بالنموذج السابق القائم على n-gram.
UITextAutocorrectionType هو تعداد بقيم ثلاث تحدد سلوك التصحيح التلقائي لحقل نصي معين. يتم تعيين كل قيمة عبر الخاصية autocorrectionType، المتاحة في Interface Builder وفي الكود عند إنشاء الحقل.
القيمة .default تعني أن الحقل يرث الإعداد العام للتصحيح التلقائي من معلمات لوحة المفاتيح في النظام. هذا الوضع موصى به لمعظم حقول النص، لأنه يحترم اختيار المستخدم. إذا قام المستخدم بتعطيل التصحيح التلقائي في الإعدادات، فإن الحقل الذي يستخدم .default لن يستخدمه أيضاً.
القيمة .yes تقوم بتفعيل التصحيح التلقائي إجبارياً للحقل بغض النظر عن إعداد النظام. يجب استخدام هذا الوضع فقط للحقول حيث الدقة الإملائية حرجة — على سبيل المثال، في محررات النصوص، حقول إدخال الملاحظات أو الرسائل. توصي Apple باستخدام .yes بحذر، لأن التفعيل الإجباري قد يتعارض مع توقعات المستخدم.
القيمة .no تعطل التصحيح التلقائي لحقل معين. هذا الوضع إلزامي لحقول كلمات المرور (إدخال النص الآمن)، عناوين البريد الإلكتروني، رموز التحقق واستعلامات البحث. في هذه الحقول، التصحيح التلقائي ليس عديم الفائدة فحسب، بل ضار — فقد يستبدل البيانات المُدخلة بشكل صحيح ببدائل خاطئة.
| الوضع | القيمة | التوصية |
|---|---|---|
| .default | يرث إعداد النظام | معظم حقول الإدخال |
| .yes | مفعل إجبارياً | محررات النصوص، الملاحظات |
| .no | معطل إجبارياً | كلمات المرور، البريد الإلكتروني، البحث، الرموز |
النموذج اللغوي للتصحيح التلقائي في iOS يستخدم مزيجاً من قاموس ثابت ونموذج مدرب ديناميكياً. يحتوي قاموس النظام على الكلمات الأكثر استخداماً لكل لغة، بينما يقوم النموذج اللغوي المعتمد على Transformer بتحليل السياق واحتمالية الاستبدال. يتم تدريب النموذج على الجهاز بناءً على النصوص التي يدخلها المستخدم.
يمكن للمستخدمين إضافة كلمات إلى قاموس شخصي من خلال إعدادات لوحة المفاتيح (الإعدادات > عام > لوحة المفاتيح > استبدال النص). يتم حفظ الكلمات المضافة في iCloud ومزامنتها عبر الأجهزة باستخدام نفس Apple ID. لن يقوم النظام بتصحيح الكلمات من القاموس الشخصي، وهو أمر مناسب للأسماء والعلامات التجارية والمصطلحات الفنية.
لـ المجالات المتخصصة — الطبية والقانونية والتقنية — قد يحتوي القاموس القياسي على مصطلحات غير كافية. في مثل هذه التطبيقات، يُوصى إما بتعطيل التصحيح التلقائي للحقول ذات الصلة أو استخدام استبدال النص المخصص عبر طريقة UIResponder .replacementDictionary لنظام iOS 17+.
وفقاً لـ Apple Machine Learning Research (2024)، النموذج الجديد للتصحيح التلقائي القائم على بنية Transformer يعالج ما يصل إلى 10 رموز سياقية (مقابل 3 رموز في النموذج السابق)، مما يسمح بتحديد نية المستخدم بدقة أكبر. يأخذ النموذج في الاعتبار ليس فقط الإملاء ولكن أيضاً البنية النحوية للجملة.
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
لـ نموذج تسجيل الدخول، يجب تعطيل التصحيح التلقائي لحقل كلمة المرور وتفعيله افتراضياً لحقل تسجيل الدخول. يُوصى أيضاً بترك حقل البريد الإلكتروني بدون تصحيح تلقائي، لأن الرمز @ وأسماء النطاقات غالباً ما يتم استبدالها بشكل غير صحيح. لحقل اسم المستخدم، يمكن تفعيل التصحيح التلقائي إذا كان اسم المستخدم كلمة قابلة للقراءة.
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 وأسماء النطاقات.
في تطبيقات المراسلة والتواصل، عادةً ما يكون التصحيح التلقائي مفعلاً، ولكن لإدخال العامية والاختصارات والمفردات غير الرسمية، قد يخلق إزعاجاً. في مثل هذه الحالات، يمكن للمستخدم تعطيل التصحيح التلقائي من خلال إعدادات لوحة المفاتيح، أو يمكن للمطور توفير مفتاح تبديل مباشرة في واجهة التطبيق.
وفقاً لـ Human Interface Guidelines من Apple، يجب تعطيل التصحيح التلقائي لأي حقل حيث قد لا توجد البيانات المُدخلة في قاموس النظام: أرقام الطلبات، رموز الحجز، المعرفات، IMEI، عناوين MAC. إذا كان الحقل يقبل بيانات أبجدية رقمية بتنسيق غير قياسي — قم بتعطيل التصحيح التلقائي.
الأسئلة الشائعة
لا يوجد تعطيل عام للتصحيح التلقائي للتطبيق بأكمله. يجب تعيين autocorrectionType = .no لكل حقل نصي على حدة أو إنشاء فئة فرعية من UITextField بقيمة معدلة.
المحاكي يستخدم نموذج إدخال مبسط من لوحة مفاتيح Mac. النموذج اللغوي للتصحيح التلقائي غير نشط على المحاكي — استخدم جهاز حقيقي للاختبار.
يمكن للمستخدم إضافة كلمة من خلال الإعدادات > عام > لوحة المفاتيح > استبدال النص. لا توجد واجهة برمجة تطبيقات للتطبيق لإضافة كلمات برمجياً إلى قاموس التصحيح التلقائي للنظام.
لا، keyboardType لا يؤثر على التصحيح التلقائي. حتى للوحة المفاتيح .numberPad، قد يكون التصحيح التلقائي نشطاً إذا لم يتم تعطيله صراحةً عبر autocorrectionType.
لوحات المفاتيح الخارجية لديها آليات التصحيح التلقائي الخاصة بها ولا تستخدم UITextAutocorrectionType النظام. يعتمد السلوك على تنفيذ لوحة المفاتيح المحددة.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.