Text Content Type: الأنواع الدلالية وUIKit

المؤلف: IT Sectr نُشر: 2026-07-07 وقت القراءة: 8 دق

Text Content Type هي آلية في iOS تخبر النظام بالبيانات التي يتوقعها حقل النص. يوفر UIKit ثوابت UITextContentType لوسم حقول الإدخال: البريد الإلكتروني، كلمة المرور، الهاتف، اسم المستخدم وعشرات الأنواع الدلالية الأخرى. وفقاً لإرشادات واجهة المستخدم من Apple (2025)، يؤدي التكوين الصحيح لنوع المحتوى إلى زيادة سرعة ملء النماذج بنسبة 40% بفضل الملء التلقائي ولوحة المفاتيح المتكيفة. استخدم UITextContentType في كل حقل نصي — فهو يحسن تجربة المستخدم ويقلل أخطاء الإدخال.

النقاط الرئيسية

  • Text Content Type هو وسم دلالي لـ UITextField و UITextView يحدد نوع البيانات المتوقعة
  • UITextContentType يحتوي على أكثر من 30 نوعاً محدداً مسبقاً: البريد الإلكتروني، الهاتف، كلمة المرور، العنوان، الاسم، اسم العائلة وغيرها
  • الملء التلقائي يعمل فقط عند تحديد نوع المحتوى بشكل صحيح — يطابق النظام الحقل مع البيانات من سلسلة المفاتيح
  • لوحة المفاتيح تتكيف مع النوع: للبريد الإلكتروني تظهر @، للهاتف تظهر تخطيطاً رقمياً
  • الأمان — استخدم الأنواع المناسبة لكلمات المرور ورموز الاستخدام الواحد لتفعيل التكامل مع iCloud Keychain

ما هو Text Content Type؟

Text Content Type (UITextContentType) هي خاصية لحقول النص في UIKit تخبر iOS بالبيانات الدلالية التي يتوقعها حقل الإدخال. يستخدم النظام هذه المعلومات لغرضين: اختيار تخطيط لوحة المفاتيح المناسب وتفعيل آلية الملء التلقائي من سلسلة المفاتيح (iCloud Keychain).

قدم iOS 5 الإصدار الأول من الأنواع الدلالية، وفي iOS 17 توسعت مجموعة UITextContentType إلى 34 ثابتاً، بما في ذلك أنواع جديدة لرموز الاستخدام الواحد والرموز البريدية وأسماء الشوارع. يمثل كل ثابت سلسلة نصية يطابقها النظام مع قواعد المعالجة الداخلية.

تعمل الآلية على مستوى UITextInputTraits — بروتوكول ترثه UITextField و UITextView و UISearchBar. هذا يعني أن نوع المحتوى متاح في جميع عناصر الإدخال القياسية دون تكوين إضافي.

وفقاً لجلسة WWDC 2024 رقم 101، توصي Apple بتحديد نوع المحتوى لكل حقل نصي في الواجهة — حتى إذا لم يكن الملء التلقائي متوقعاً. يساعد الوسم نفسه VoiceOver في الإعلان بشكل صحيح عن غرض الحقل للمستخدمين ذوي الإعاقات.

الأنواع المتاحة من UITextContentType

يوفر UIKit تسلسلاً هرمياً من الأنواع مقسمة إلى فئات. تشمل المجموعات الرئيسية بيانات التعريف (الاسم، اسم العائلة، اسم المستخدم)، معلومات الاتصال (البريد الإلكتروني، الهاتف، العنوان) وبيانات الاعتماد (كلمة المرور، رمز الاستخدام الواحد). تنشط كل مجموعة آليات مختلفة للملء التلقائي.

بيانات الاتصال

تتضمن مجموعة أنواع الاتصال `.emailAddress` و `.telephoneNumber` و `.fullStreetAddress` و `.city`. تنشط هذه الأنواع الملء التلقائي من جهات الاتصال و iCloud Keychain. يقترح حقل من نوع `.emailAddress` تلقائياً عناوين البريد الإلكتروني التي تم إدخالها سابقاً، بينما يقترح `.telephoneNumber` أرقام الهواتف من دفتر العناوين.

بيانات الاعتماد

لحقول تسجيل الدخول، تم تصميم .username و .password و .newPassword. ينشط نوع .username مدير كلمات المرور في iCloud، الذي يقدم بيانات الاعتماد المحفوظة. يبدأ حقل من نوع .newPassword إنشاء كلمة مرور قوية عبر iCloud Keychain عند الإدخال الأول.

الأنواع المتخصصة iOS 17+

بدءاً من iOS 17، أضافت Apple .oneTimeCode لرموز تأكيد SMS و .shipmentTrackingNumber لتتبع الطرود. يتعرف نوع .oneTimeCode تلقائياً على الرموز من الرسائل ويقدمها في شريط QuickType دون الحاجة إلى فتح تطبيق الرسائل.

الفئةالأنواعiOS
التعريف.name, .givenName, .familyName, .nickname5+
جهات الاتصال.emailAddress, .telephoneNumber, .fullStreetAddress5+
بيانات الاعتماد.username, .password, .newPassword5+
الموقع.location, .city, .state, .postalCode10+
بيانات البطاقة.creditCardNumber, .creditCardSecurityCode12+
رموز الاستخدام الواحد.oneTimeCode17+

يتم تمثيل كل نوع بثابت نصي، ولكن يجب مقارنتها باستخدام عامل التشغيل ==، وليس عبر rawValue. قد يضيف iOS أنواعاً جديدة في الإصدارات المستقبلية، لذا استخدم دائماً فرع default في عبارات switch-case.

تكيف لوحة المفاتيح مع نوع المحتوى

يعمل UIKeyboardType و UITextContentType معاً: يحدد نوع لوحة المفاتيح تخطيطها، بينما يضيف نوع المحتوى أزراراً إضافية في شريط QuickType. إذا تم تعيين نوع محتوى، قد يتجاوز iOS نوع لوحة المفاتيح للإدخال الأمثل. على سبيل المثال، مع نوع `.emailAddress`، تظهر لوحة المفاتيح تلقائياً رمز @ على الطبقة الرئيسية.

بالنسبة لحقل من نوع .telephoneNumber، يحول iOS لوحة المفاتيح إلى تخطيط الهاتف بغض النظر عن نوع لوحة المفاتيح المحدد. لا يمكن تعطيل هذا السلوك — يعتبر النظام أولوية نوع المحتوى أعلى من التكوين الصريح للوحة المفاتيح. لا يحتاج المطورون إلى تكوين كلتا الخاصيتين.

يضيف النوعان .URL و .emailAddress زرَي .com و @ إلى لوحة المفاتيح على التوالي. يظهر نوع .decimalPad مع نوع المحتوى .creditCardNumber لوحة مفاتيح رقمية بفاصل عشري، وهو مناسب لإدخال المبالغ وأرقام البطاقات. وفقاً لإرشادات واجهة المستخدم من Apple، يتوقع المستخدم أن تتطابق لوحة المفاتيح مع نوع البيانات المدخلة، وليس العكس.

الاستثناء هو .oneTimeCode — هذا النوع لا يغير تخطيط لوحة المفاتيح ولكنه ينشط شريط QuickType برموز من SMS. يرى المستخدم اقتراح الرمز فوق لوحة المفاتيح ويمكنه إدراجه بنقرة واحدة. تعمل الآلية فقط للحقول التي تصبح first responder بعد تلقي SMS.

الملء التلقائي وسلسلة المفاتيح

يستخدم الملء التلقائي في iOS Text Content Type لمطابقة حقول الإدخال مع البيانات من iCloud Keychain و ASCredentialProviderViewController. يحلل النظام جميع الحقول على الشاشة، ويحدد أنواعها الدلالية، ويقدم البيانات المحفوظة المقابلة. بدون أنواع محددة بشكل صحيح، لا يتم تنشيط الملء التلقائي.

لكي يعمل الملء التلقائي، يجب استيفاء ثلاثة شروط. أولاً، يجب أن يكون للحقل UITextContentType صحيح. ثانياً، يجب أن تحتوي الشاشة على حقلين على الأقل بأنواع مختلفة (مثل .username و .password). ثالثاً، يجب أن يدعم التطبيق Associated Domains مع صلاحية webcredentials للمزامنة مع موقع ويب.

تستخدم سلسلة المفاتيح (Keychain) نوع المحتوى لتصنيف السجلات المحفوظة. إذا تم وسم حقل كـ .password، يحفظ النظام القيمة المدخلة في iCloud Keychain ويقدمها عند تسجيل الدخول التالي. يتم حفظ الحقول من نوع .creditCardNumber تلقائياً في Wallet بعد تأكيد Face ID.

بالنسبة لرموز الاستخدام الواحد من نوع .oneTimeCode، يستخدم iOS 17 آلية AutoFill OTP الجديدة، التي لا تتطلب وصولاً مباشراً إلى SMS. يعترض النظام الرموز من الرسائل على مستوى نظام التشغيل وينقلها إلى التطبيق عبر شريط QuickType، متجاوزاً قراءة محتوى الرسائل بواسطة التطبيق.

أمثلة الاستخدام في Swift

يتم التكوين الأساسي لـ Text Content Type في Swift عبر الخاصية textContentType في الكود أو من خلال Interface Builder. في الكود، يستغرق تعيين ثابت سطراً واحداً، بينما في IB يتم تحديد النوع المطلوب من قائمة منسدلة في مفتش السمات.

swift
let emailField = UITextField()
emailField.textContentType = .emailAddress
emailField.placeholder = "example@domain.com"

let passwordField = UITextField()
passwordField.isSecureTextEntry = true
passwordField.textContentType = .newPassword

لـ إنشاء نموذج تسجيل دخول برمجياً مع الملء التلقائي، استخدم كلا الحقلين بأنواع محتوى مختلفة. يربطها النظام تلقائياً كاسم مستخدم وكلمة مرور. إذا كان التطبيق يدعم تسجيل الدخول البيومتري، أضف حقلاً من نوع .username للتعرف الصحيح على الحساب.

swift
class LoginViewController: UIViewController {

    @IBOutlet var usernameField: UITextField!
    @IBOutlet var passwordField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        usernameField.textContentType = .username
        passwordField.textContentType = .password
        passwordField.autocorrectionType = .no
    }
}

لحقل إدخال رمز الاستخدام الواحد من SMS، حدد نوع .oneTimeCode. سيقترح النظام تلقائياً الرمز في شريط QuickType بعد استلامه. لا يحتاج المطور إلى طلب إذن قراءة SMS أو تنفيذ تحليل رسائل مخصص.

swift
let otpField = UITextField()
otpField.textContentType = .oneTimeCode
otpField.keyboardType = .numberPad
otpField.placeholder = "Code from SMS"

لـ iOS 17+، يدعم نوع .oneTimeCode الملء التلقائي دون التركيز على الحقل. إذا تلقى المستخدم SMS برمز، يعرضه iOS على شاشة القفل، وبعد فتح القفل، يتم إدراج الرمز تلقائياً في الحقل النشط مع نوع المحتوى المقابل.

توصيات لاختيار النوع

اختيار النوع الصحيح يؤثر مباشرة على تحويل النموذج وتجربة المستخدم. توصي Apple بشدة بتحديد النوع الأكثر تحديداً المتاح. على سبيل المثال، استخدم .givenName لحقل الاسم بدلاً من .name العام — وهذا يسمح للنظام باقتراح الملء التلقائي من جهات الاتصال بالاسم الصحيح.

تجنب خطأ شائعاً — تعيين .emailAddress لحقل اسم المستخدم. إذا كان التطبيق يستخدم البريد الإلكتروني كاسم تسجيل دخول، حدد .username لحقل تسجيل الدخول و .password لحقل كلمة المرور. نوع .emailAddress مخصص حصرياً لإدخال البريد الإلكتروني كبيانات اتصال، وليس كمعرّف.

للنماذج التي تحتوي على حقول متعددة من نفس النوع (مثل عنواني بريد إلكتروني)، قم بتعيين الخاصية .textContentType لكل حقل ولكن أضف قيماً مختلفة لـ accessibilityIdentifier. يساعد هذا VoiceOver في الإعلان بشكل صحيح عن الحقول، على الرغم من أن نظام الملء التلقائي قد يقترح نفس القيمة لكلا الحقلين.

اختبر الملء التلقائي على جهاز حقيقي مع سلسلة مفاتيح مملوءة. لا يدعم المحاكي iCloud Keychain بشكل كامل، وقد يختلف سلوك الملء التلقائي. وفقاً لمنتديات مطوري Apple (2025)، تنشأ معظم مشكلات الملء التلقائي من نوع محتوى محدد بشكل غير صحيح.

الأسئلة المتكررة

ما الفرق بين textContentType و keyboardType؟

UITextContentType يحدد النوع الدلالي للبيانات، بينما يحدد UIKeyboardType تخطيط لوحة المفاتيح. يمكن لنوع المحتوى تجاوز نوع لوحة المفاتيح للإدخال الأمثل.

ما الأنواع التي تنشط الملء التلقائي من iCloud Keychain؟

يتم تنشيط الملء التلقائي بواسطة الأنواع .username و .password و .newPassword و .emailAddress و .telephoneNumber و .creditCardNumber. يطابق النظام هذه الأنواع مع البيانات من سلسلة المفاتيح.

هل يعمل Text Content Type في WKWebView؟

نعم، WKWebView يدعم Text Content Type لحقول HTML ذات السمة autocomplete. يقوم iOS تلقائياً بمطابقة سمات autocomplete مع أنواع UITextContentType.

هل أحتاج إلى تحديد content type لـ UITextView؟

نعم، UITextView يرث أيضاً UITextInputTraits ويدعم الخاصية textContentType. هذا مفيد لحقول الإدخال متعددة الأسطر لبيانات الاتصال.

ماذا يحدث عند تحديد نوع غير صحيح؟

قد يقترح النظام بيانات غير صحيحة للملء التلقائي أو لا يقترح شيئاً. على سبيل المثال، حقل اسم مستخدم من نوع .emailAddress قد يقترح بريداً إلكترونياً بدلاً من اسم المستخدم.

الخلاصة

  • Text Content Type هو وسم دلالي لحقول الإدخال في iOS يحدد نوع البيانات المتوقعة
  • UITextContentType يتضمن أكثر من 30 ثابتاً لفئات مختلفة: جهات الاتصال، بيانات الاعتماد، الموقع، بيانات الدفع
  • لوحة المفاتيح تتكيف تلقائياً مع نوع المحتوى، وتعرض الأحرف والتخطيط المطلوبين
  • الملء التلقائي من iCloud Keychain يتم تنشيطه فقط عند تحديد أنواع الحقول بشكل صحيح
  • آلية OTP في iOS 17+ تدخل الرموز من SMS تلقائياً دون الوصول إلى الرسائل
  • VoiceOver يستخدم نوع المحتوى للإعلان بشكل صحيح عن غرض الحقل
  • توصية — حدد النوع الأكثر تحديداً لكل حقل واختبر الملء التلقائي على جهاز حقيقي

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا