Understanding iOS Custom Keyboard extensions

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

ويمكن أن تشمل لوحات المفاتيح العرفية أي مخطط، بما في ذلك السمات الخاصة، أو الرسائل المكثفة، أو المحركات، أو حتى المدخلات القائمة على لفتة معينة، غير أن شركة آبل تفرض قواعد صارمة: لا تستطيع اللوحة الرئيسية الوصول إلى موارد الشبكة دون إذن صريح من المستعملين، ويجب عليها ألا تجمع بيانات عن المحللين دون موافقة واضحة، مما يكفل خصوصية المستعملين مع السماح بالمرونة للمطورين.

وعندما تقومون ببناء لوحة مفاتيح مصممة خصيصاً، فإنكم تقومون أساساً بوضع تمديد للأجهزة، ويتم توسيع نطاقها في إطار برنامج مضيف، ويجب على المستعملين تركيب هذا التطبيق، ثم تمكين التمديد عن طريق Settings > General < Keyboard > Keyboards . وعلى عكس أندرويد، لا يسمح النظام الإلكتروني بالاستعاضة الكاملة عن لوحة مفاتيح النظام؛ ويجب على المستعملين أن ينتقلوالتفات إلى لوحة مفاتيحكم.

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

وضع مشروع تمديد لوحة المفاتيح

إنشاء لوحة مفاتيح مصممة داخل (إكسيد) تحتاج إلى تطبيق للحاويات و هدف الإرشاد

إضافة هدف جديد في الرمز Xcode

افتح مشروعك الحالي أو إنشاء مشروع جديد.

معلومات أساسية

ويتضمن " نشرة المعلومات " في التمديد مفتاحين حاسمين تحت " توسيع نطاق " :

  • IsASCIICapable]: Set to `YES ' if your keyboard only uses ASCII characters; otherwise set `NO ' .
  • PrefersRightToLeft : عدل إذا كانت لغتك تقرأ الحق في الرفع.
  • PrimaryLanguage: Define a language code (e.g., `en-US ' ).

كما تضاف عبارة " بيان البيانات - وصف الصور المصورة " فقط إذا أدرجتم ملامح مدخلات مصورة (مجهزة لقائمة مفاتيح) تجنباً لإذن غير ضروري.

فهم حق المطالبة

وبغير الافتراض، لا توجد لوحات مفاتيح خاصة يمكن الوصول إليها، وإذا ما أردت تحميل مجموعات خاصة أو توفير مزامنة السحاب، يجب أن تضيف مفتاح " الطلب على المستحقات " في " توزيع المعلومات " ، وأن تضعه في " ييس " ، غير أن استعراضات آبل تتقدم بطلبات للحصول على معلومات مفتوحة بعناية، وذلك من أجل لوحة مفاتيح تركز على غير المستعملين الخاصين، تجنبا لهذه المسائل الرئيسية.

بناء وحدة التفتيش المشتركة الأساسية

طريقة "اللواد" داخل "مراقبة الـ "كيت لوفين فيو" هي حيث وضعت مخططك الرئيسي يمكنك استخدام لوحة القصص أو بناء واجهة برنامجية، من أجل مخطط معقد ذو طابع خاص، تقدم برامجية جامعة التحكم بشكل أفضل في القيود الدينامية وضغوط العيون الآلي.

override func viewDidLoad() {
 super.viewDidLoad()

 // Set up the main container view
 let stackView = UIStackView()
 stackView.axis = .vertical
 stackView.distribution = .fillEqually
 stackView.spacing = 4
 stackView.translatesAutoresizingMaskIntoConstraints = false
 self.view.addSubview(stackView)

 NSLayoutConstraint.activate([
 stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 4),
 stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -4),
 stackView.topAnchor.constraint(equalTo: view.topAnchor, constant: 4),
 stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -4)
 ])
}

هذه المجموعة الدنيا تخلق كومة عمودية التي ستحمل خطوطاً من المفاتيح

تصميم لوحة المفاتيح للعدد الخاص

وتحتاج لوحات مفاتيح خاصة إلى تنظيم دقيق، ويتعين على المستعملين أن يجدوا الرموز بسرعة دون الصيد عبر صفحات رئيسية لا نهاية لها، بدءا بتجميع الرموز إلى فئات منطقية:

  • رموز الارتطام ]: $, UM, £, UN, WA, ⁇
  • Mathematical signs]: +, - × ترجمــة ترجمــة ©
  • متغيرات التصويب : ...، -،
  • Accented letters]: á, é, í, ó, ú, ü, ñ, ç
  • Arrows and directional]: ⁇ , ⁇ , ⁇ , ⁇ , ⁇

تنفيذ طبقة أو ثلاث طبقات تخطيط: طبقة أبجدية رئيسية ذات نضال للتحول إلى طبقة رموز، وربما طبقة ثانوية ذات طابع أقل شيوعا، واستخدام مفتاح مخصص (مثلا " 123 " أو " + " ) للتبديل بين طبقات، وكل طبقة هي مجموعة منفصلة من الآراء المتسلسلة التي يمكن أن تتبادلها عن طريق " ممتلكات " أو عن طريق الاختباء/العرض.

لفتات طويلة الأجل للمعاملين الإضافيين

وإذا كان لوحكم الرئيسي يُظهر مخططا معياريا للترددات العالية، يتوقع المستخدمون أن يكشفوا عن متغيرات الطبيعة، فعلى سبيل المثال، يظهر مفتاح " هاء " " ، " ، " ، " ، " ، " ، " ، " أن ينفذوا هذا الأمر بإضافة " مشغلات الأثاث " لكل مفتاح، وعند بدء تشغيله، يقدمون نظرة على المفتاح فوق المفتاح المتاح.

وتستخدم لوحة مفاتيح نظام آبل آلية داخلية، ولكن بالنسبة لتمديدكم، يمكنكم استخدام " أوفيو " التي تبدو كفقاعة عائمة، وضمان ألا يتجاوز البوب المنطقة الآمنة وأن يحترم توجه الأجهزة.

كود سنيب: إضافة مطبعة طويلة إلى مفتاح

let longPress = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(_:)))
longPress.minimumPressDuration = 0.3
keyButton.addGestureRecognizer(longPress)

داخل المعالج، تتبع الدولة `. بيغان`، `غيرت`، و `متجهة إلى عرض وتحديث واختيار من البابا.

الحجم الرئيسي والمباعدة بين الدورات

وتختلف أجهزة الإيزو في عرض الشاشة: استخدام التركيب التناسبي: 10-12 مفاتيح لكل صف على أيفونات، وأكثر قليلا على أيباد، وينبغي أن يكون كل مفتاح على الأقل طول 28 نقطة لتلبية المبادئ التوجيهية الإنسانية المشتركة بين الأيل بالنسبة لأهداف اللمسات، ووضع قيود بحيث تتقلص المفاتيح بشكل مناسب على الشاشات الأصغر، ولكفالة ظهور الرموز بوضوح، واستخدام حجم مائل يتراوح بين 16 و18 نقطة بالنسبة للعلامات الرئيسية.

:: معالجة المدخلات مع دليل الوثائق النصية

وعندما يستعمل المستخدم مفتاحا، يجب أن يدرج لوحة المفاتيح الطابع في ميدان النص الذي يركز حاليا، ويتم ذلك من خلال موضوع " حظر التدوير " ، وهو مثال " حظر التداول " ، ويوفر هذا الوكيل أساليب مثل " غير التعريفي " ، و " التسليم، و " التطبيق " (بحسب الشكل).

بالنسبة للشخصيات الخاصة، كثيراً ما تحتاج إلى إدخال غليفات متعددة (مثل الكيموجات أو الجمع بين الحساسية) وتعالج هذه الأمور على نحو صحيح بـ " إكسير تيكست " ، طالما تمرين بسلسلة اليونيكود الصحيحة، مثلاً لإدراج الطابع المكثف " ، تسمية `بروكست-0`1` كبهجة الجمع بينية و " .

Handling Shift and Caps Lock

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

استخدام ممتلكات البوولية " غير صالحة " لتتبع الدولة، وعندما يستعمل مفتاح التحول، يُنظّفها ويعيد تحميلها، وبالنسبة لقفل الأغطية، يكتشفون قفزة مزدوجة على مفتاح التحول؛ ويمكّنون من وضع غطاء ثابت ويظهر مؤشرا (مثلا، الضوء على مفتاح التحول).

تحذف وتراقب السكك الحديدية

إدراج مفتاح حذف يسمي " بروسي.ديليتي باكورد " ، وللوحة مفاتيح خاصة، قد يحتاج المستخدمون إلى حذف كلمات كاملة بسرعة، ويمكنكم تنفيذ إجراء " كلمة " عن طريق دعوة " الوسادة " في حلقة أو باستخدام طريقة " التلقيم المضاد " لنقل الشعار إلى الوراء على حدود النص، ثم حذف " الأسباب " .

وللنقل إلى الأمام أو إلى الوراء، استخدمي زر " التصريف " (الممارسة: 1) ' و ' 1`، وهو يستخدم في زر " الفضاء الخارجي " أو " الفضاء الافتراضي " إذا اخترت أن تُضمّن واحداً.

التمكين من تمديد لوحة المفاتيح واختبارها

اختبارات المبسطة

وفي Xcode، تشغيل تطبيق الحاويات على جهاز محاكاة، ثم الذهاب إلى Settings > General < Keyboard > Add New Keyboard واختيار تمديد لوحة مفاتيحك حسب الطلب في إطار قسم " لوحة مفاتيح تحديد النقاط الثلاث " ، وقد تحتاج إلى التحول إلى لوحة مفاتيحك عن طريق برمجة المخرج الميداني

الجهاز الفيزيائي

اختبار الأجهزة أمر أساسي لأن المحاكي لا يجسد تماما جميع سلوكيات اليوسفي (مثلاً، القيود على ارتفاع اللوحة الرئيسية، والتركيب الآلي)، وتركيب تطبيق الحاويات على جهاز من الأجهزة عن طريق وضع موجز للتطوير، ثم تمكين لوحة المفاتيح من ستينغز، واستخدام علامة Xcode Attach to Process، واسمه الرئيسي في إبطال مفعول المادة.

القضايا المشتركة

  • Keyboard not appearing]: Ensure the extension is properly enabled and the `RequestOpenAccess ' entitlement matches your needs. Also check that the `Principal class` in `Info.plist' points to your `KeyboardVieController ' .
  • Layout not sizing correctly: Override `viewWillLayoutSubviews` in your `KeyboardViewController' and update the altitude constraint of the view. The keyboard must conform to the system’s expected altitude (usually between 216 and 330 points on iPhone, and larger on iPad).
  • Input not registering]: Verify that you are calling `insertText ' on the correct proxy object.

منح امتيازات ومستعملي

وتشكل لوحات المفاتيح العرفية نقطة قلق بالنسبة لخصوصية المستعملين، ويتطلب التطبيق ألا تقوم اللوحات الرئيسية بجمع أو نقل أو تخزين بيانات المحركات دون موافقة صريحة من المستعملين، والمبادئ التوجيهية التالية حاسمة:

  • no network calls : ما لم تكن لديك `RequestOpenAccess ' مُتاحة ومنحة المستخدم، فإن تمديدك لا يمكن أن يقدم طلبات للشبكة، وحتى لو أمكن الوصول إليها، يجب أن تكشف عن جمع البيانات في سياسة الخصوصية.
  • لا يمكن لوحك الرئيسي قراءة لوحة مفاتيح النظام، فقط التطبيق المضيف يمكنه الدخول إلى لوحة المشبك، فقط عندما يكون التطبيق نشطاً.
  • No analytics of keytrokes: You cannot log which keys are pressed. If you need to learn user preferences (e.g., frequently used symbols), store that data only locally with a clear explanation and an opt-out option.
  • Provide a toggle for data collection: If your keyboard uses networking for special character updates, include a shift in the container app to enable/disable it, and respect the user’s choice.

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

تصميم أدوات للوصول إلى المصنفات الخاصة

Organize Symbols for Fitts’ Law

وضع أكثر الشخصيات الخاصة استخداماً قرب مركز لوحة المفاتيح أو على الصف السفلي من أجل الوصول إلى إبهام أسهل، مثلاً إذا كان الجمهور المستهدف يصنف العملة في كثير من الأحيان، يضعون دولار، وقيمة £ على الصف الأصلي لطبقة الرموز، ويجمعون رموزاً مماثلة للحد من الحمولة المعرفية.

استخدام التغذية الافتراضية

وعندما يضغط مفتاح ما، يُظهر جمهوراً موجزاً (مثل استعراض النظام الأساسي) لتأكيد المدخلات، وهذا مفيد بوجه خاص للرموز الصغيرة، ويُنفذ عادة " UIControl " لكل مفتاح يستجيب للحدث الذي يُلقي على اللمسات، ويعرض نسخة مكبرة من الطابع فوق المفتاح.

Include an Auto-Advance Feature for Symbols

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

إمكانية الوصول إلى الدعم

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

اعتبارات إضافية

الأداء على الوجه الأمثل

:: توسيع نطاقات اللوحات الرئيسية في بيئة مُقيدة بالذاكرة - تجنب تحميل الصور الثقيلة أو الصور المعقدة - استخدام تصنيفات فرعية للوزن الخفيف " UIbutton " أو " UICollectionView ' لإعادة الاستخدام الفعال، وفي الأجهزة القديمة، ينبغي أن يكون من السلس، وإعطاء امتدادك للأدوات للتحقق من قطرات الإطارات.

المحلية

وإذا كان لوحكم الرئيسي يدعم لغات متعددة، فإن النظر في توفير مجموعات الرموز المحلية، فعلى سبيل المثال، قد يحتاج المستخدم الفرنسي إلى " " ، بينما يحتاج المستخدم الألماني إلى بيت أو إيه أو.

استعراض المخزون

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

التحديثات والصيانة

ويمكن أن تغير نسخ جديدة من نظام iOS كيفية تفاعل تمديدات لوحة المفاتيح مع النظام، واختبار تمديدك في إصدارات البيتا وتحديث أساليب " UIInputViewController " حسب الحاجة، فعلى سبيل المثال، استحدثت محطة الفضاء الدولية 16 نظاما جديدا لتحديد خطوط المفاتيح لوحات المفاتيح الأطول على أجهزة iPads.

خاتمة

إن تطبيق لوحة مفاتيح خاصة ذات طابع خاص على نظام iOS هو وسيلة قوية لتحسين كفاءة تحديد شكل المستخدمين الذين يحتاجون إلى رموز أو رسائل مشدّدة أو حركات لا تطغى على الفور لوحة مفاتيح النظام، وببناء خطوط رئيسية ذات طابع مصمم بعناية، ووصول غير مناسب إلى الكتائب، وخدمة قوية للمدخلات، يمكن أن تُقدّموا خبرة لا تحصى، وتُعِدّوا على الخصوصية، وتُصِّدوا على المبادئ التوجيهية للأجهزة الاختبارات.

For further reading, consult the official Apple documentation on Creating a Custom Keyboard], the ] App extension Programming Guide, and the Human Interface Guidelines for Keyboards.