كيفية اكتشاف لفتة دائرية عن طريق التعرف على الإيماءات؟

StackOverflow https://stackoverflow.com/questions/4600690

سؤال

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

هل كانت مفيدة؟

المحلول

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

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

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

نصائح أخرى

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

يرجى أي شخص ، شوك ، استنساخه ، استخدامه ، تحسينه ، إنه مفتوح المصدر ، وإليك رابط الريبو الخاص بي:

https://bitbucket.org/danielphillips

هل حاولت كتابة معرفات التعرف على الإيماءات الخاصة بك؟ هناك تعليمات مفصلة في المستندات.

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

ربما ، قد لا يرسم المستخدم دائرة مثالية ، وسيكون الحل الذي توفره Sixten Otto جيدًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top