سؤال

أقوم بأول تجربة لي في برمجة Cocoa Touch (وواحدة من أولى تجاربي في Cocoa بشكل عام) وأكتب لعبة بسيطة لجهاز iPhone، على الرغم من أن هذا السؤال يدور حول لمسة الكاكاو بشكل عام.

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

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

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

  • أم هل ينبغي عليّ فقط تحديد عرض رئيسي واحد يرسم الشريط بأكمله ويكتشف مكان حدوث اللمس؟ أشعر أن هذا أسلوب مصمم بشكل سيئ - لا ينبغي لي أن أقوم ببرمجة كود الاختبار الناجح.


تم التعديل لتوضيح السؤال

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

المحلول

الطريقة الأكثر خفة هي إضافة طبقات فرعية إلى طبقة UIView الخاصة بك.استخدم اختبار النجاح:لإرسال اللمسات التي تتلقاها على UIView إلى مثيل CALayer الذي يحتاج إلى استلامها.

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

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

نصائح أخرى

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

والثاني عن التجمع الوطني الديمقراطي:تحدث فقط عن الايفون

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

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

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

يمكنك تخطيط طريقة العرض الخاصة بك في Interface Builder.ببساطة اسحب مجموعة من UIButtonفي وجهة نظر وحدة التحكم في طريقة العرض الخاصة بك.

للرد على الأحداث، يمكنك تحديد IBAction في وحدة تحكم العرض الخاصة بك وقم بتوصيل الأزرار بها.

هذا كله أساسي للغاية.أقترح عليك على الأقل الاطلاع على مقدمة برمجة iPhone التي تقدمها Apple عبر الإنترنت.سوف يعلمك أساسيات iPhone وInterface Builder.

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