ما هي ردود الفعل اللمسية؟

ردود الفعل اللمسية هي استجابة حسية — اهتزاز صغير أو نقرة — ينتجها الجهاز لتأكيد إجراء أو لفت الانتباه. على الهواتف الذكية، يتم إنشاؤها بواسطة محرك صغير (على أجهزة iPhone، "Taptic Engine" من Apple) ينتج نبضات قصيرة ومحددة بدقة. على عكس الاهتزاز الطويل، فإن تقنيات اللمس الحديثة حادة وخفيفة، مصممة لتشعر وكأنها نقرة فعلية وليست إنذار.

في تطبيقات iOS الأصلية، يستخدم المطورون واجهة برمجة التطبيقات UIFeedbackGenerator لتشغيل أنماط لمسية مختلفة مثل نقرة خفيفة أو نقرة مزدوجة "نجاح" أو نقرة ثلاثية "خطأ". لفترة طويلة، لم تكن منصة الويب على iOS Safari تحتوي على ما يعادلها — كان navigator.vibrate() يتم تجاهله ببساطة على أجهزة iPhone. تستغل مكتبة ios-haptics تأثيراً جانبياً لعنصر <input type="checkbox" switch> (الذي تم تقديمه في Safari 17.4): تبديل هذا المفتاح يشغل محرك اللمس النظامي، مما يسمح لصفحات الويب بتشغيل أنماط لمسية قصيرة من JavaScript.

وصف الأداة

يتيح اختبار iOS Haptics لك تشغيل أنماط ردود الفعل اللمسية مباشرة من متصفحك للتحقق مما إذا كان جهازك وإصدار نظام التشغيل يدعمانها. يعرض الأنماط الثلاثة التي توفرها مكتبة ios-haptics — نقرة واحدة، و"تأكيد" (نقرتان سريعتان)، و"خطأ" (ثلاث نقرات سريعة) — ويتضمن أيضاً زراً يستدعي واجهة برمجة التطبيقات القياسية navigator.vibrate() كبديل للأجهزة الأخرى مثل Android.

أمثلة

الإجراء الشعور المتوقع على iPhone (iOS 17.4–26.4) الشعور المتوقع على Android
نقرة لمسية واحدة نقرة واحدة قصيرة وحادة اهتزاز واحد قصير (~200 ميلي ثانية)
تأكيد (نقرتان سريعتان) نقرتان سريعتان متتاليتان اهتزازان قصيران
خطأ (ثلاث نقرات سريعة) ثلاث نقرات سريعة متتالية ثلاثة اهتزازات قصيرة
اختبار navigator.vibrate() لا شيء على معظم إصدارات iOS اهتزاز واحد ~200 ميلي ثانية

الميزات

  • أزرار بنقرة واحدة لأنماط اللمس الفردية والتأكيد والخطأ
  • الكشف التلقائي عن دعم اللمس على الجهاز الحالي
  • اختبار بديل مدمج لواجهة برمجة التطبيقات navigator.vibrate() القياسية
  • سجل أحداث مباشر مع طوابع زمنية لكل نمط يتم تشغيله
  • لافتات حالة واضحة توضح توافق إصدار iOS

حالات الاستخدام

  • مطورو الويب الذين يتحققون من أن ردود الفعل اللمسية تعمل على جهاز iPhone حقيقي قبل دمج ios-haptics في موقعهم أو PWA الخاص بهم
  • مهندسو ضمان الجودة الذين يتحققون من كيفية شعور نفس الأنماط على أجهزة وإصدارات نظام تشغيل ومتصفحات مختلفة
  • المستخدمون الفضوليون الذين يريدون تجربة الفرق بين ردود الفعل اللمسية بنمط "Taptic" من iOS والنبضة الأطول navigator.vibrate() من Android

كيف يعمل

على iOS Safari، تقوم الأداة بإنشاء <input type="checkbox" switch> مخفي ديناميكياً، وتبديله، ثم إزالته من DOM. إن عملية تبديل هذا المفتاح الأصلي هي ما يشغل Taptic Engine — لا توجد واجهة برمجة تطبيقات ويب عامة تفعل هذا مباشرة. تكرر أنماط "التأكيد" و"الخطأ" ببساطة التبديل مرتين أو ثلاث مرات بتتابع سريع.

على الأجهزة التي لا تدعم خدعة مفتاح iOS، تعود المكتبة إلى navigator.vibrate()، والذي يتمتع بدعم واسع على متصفحات Android. يستدعي زر "اختبار navigator.vibrate()" في هذه الأداة تلك الواجهة البرمجية مباشرة حتى تتمكن من مقارنة الآليتين.

شرح الخيارات

  • نقرة لمسية واحدة — تشغيل نقرة واحدة قصيرة. الأفضل استخدامها لتأكيد تفاعل صغير مثل تبديل أو حقل نموذج ناجح.
  • تأكيد (نقرتان سريعتان) — تشغيل نقرتين سريعتين. مثالي لـ "تم الحفظ" أو "تم الإرسال" أو تأكيدات إيجابية أخرى.
  • خطأ (ثلاث نقرات سريعة) — تشغيل ثلاث نقرات سريعة. استخدم للإشارة إلى أخطاء التحقق أو الأعطال المدمرة.
  • اختبار navigator.vibrate() — استدعاء Web Vibration API بمدة 200 ميلي ثانية. مفيد للتأكد من دعم الأجهزة غير iOS والمقارنة بين الشعور مقابل أنماط iOS.
  • مسح السجل — إزالة جميع الإدخالات من سجل الأحداث.

القيود

  • تعمل اللمسات البرمجية على iOS فقط على iOS 17.4 حتى 26.4. قامت Apple بإصلاح السلوك الأساسي في iOS 26.5، لذا فإن استدعاء هذه الأنماط من JavaScript لم يعد يشغل Taptic Engine على أحدث إصدارات iOS. التفاعل المباشر من قبل المستخدم مع <input type="checkbox" switch> حقيقي لا يزال يعمل.
  • يتجاهل iOS Safari navigator.vibrate() على جميع الإصدارات تقريباً، لذا سيبدو زر البديل صامتاً على أجهزة iPhone.
  • لا يمكن لمتصفحات سطح المكتب إنتاج ردود فعل لمسية؛ ستعمل الأزرار لكنك لن تشعر بشيء.
  • تتطلب بعض متصفحات Android أن تكون الصفحة في المقدمة وحركة من المستخدم قبل تشغيل navigator.vibrate().
  • قد يتم تعطيل ردود الفعل اللمسية أيضاً في إعدادات نظام الجهاز (مثل الإعدادات → الأصوات والاهتزازات → اهتزازات النظام على iOS).

نصائح

  • اختبر على جهاز حقيقي، وليس محاكي أو محاكاة — الأجهزة الافتراضية لا تحتوي على Taptic Engine.
  • إذا لم يحدث شيء على iPhone، تحقق من تفعيل اهتزازات النظام في الإعدادات وأن وضع الصمت لا يقمعها على إصدارات iOS الأقدم.
  • استخدم نمط التأكيد بحذر؛ الإفراط في استخدام اللمسات السريعة يصبح مزعجاً بسرعة.
  • اجمع بين اللمسات والتغذية الراجعة البصرية — اللمسة وحدها نادراً ما تكون كافية لتوصيل الحالة للمستخدم.

الأسئلة الشائعة

لماذا لا أشعر بشيء على جهاز iPhone الخاص بي؟ أنت على الأرجح على iOS 26.5 أو أحدث، حيث قامت Apple بإصلاح التقنية المستخدمة من قبل هذه المكتبة. جرب جهازاً يعمل بـ iOS 17.4–26.4، أو تحقق من تفعيل اهتزازات النظام في الإعدادات.

لماذا لا يعمل navigator.vibrate() على iPhone؟ لم تقم Apple أبداً بتنفيذ Web Vibration API في iOS Safari. لا توجد حالياً طريقة قياسية لتشغيل الاهتزاز على iOS من صفحة ويب.

هل من الآمن استخدام هذا في الإنتاج؟ المكتبة صغيرة وخالية من الآثار الجانبية، لكن لأنها تعتمد على خاصية غريبة لعنصر HTML واحد محدد، يمكن أن تتعطل في أي تحديث iOS في المستقبل — كما حدث بالفعل في iOS 26.5. تعامل دائماً مع ردود الفعل اللمسية كتحسين تدريجي، وليس كمتطلب.

هل يعمل داخل PWA أو تطبيق "إضافة إلى الشاشة الرئيسية"؟ نعم، على إصدارات iOS المدعومة، تعمل نفس التقنية في تطبيقات الويب المثبتة تماماً كما هو الحال في Safari.