مناظر تنبيه في الصورة ، iPad في المناظر الطبيعية ، وغير قادر على التدوير إلى أي شيء سوى المشهد "الآخر" (180 درجة)

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

سؤال

تحديث: تم حلها. انظر الإصلاح في الأسفل.

في تطبيق iPad الخاص بي الذي يدعم جميع التوجهات ، إذا تم تحميل التطبيق في المناظر الطبيعية ، تحدث أشياء غريبة:

  1. تظهر وجهات نظر التنبيه في صورة ، على الرغم من أن الباقي في المناظر الطبيعية
  2. إن تدوير iPad من المناظر الطبيعية إلى الصورة لا يؤدي إلى دوران (ولا يؤدي إلى أي من أساليب نمط ما يجب أن يكون).
  3. يؤدي تدوير iPad 180 درجة (إلى "المناظر الطبيعية الأخرى") إلى الدوران ، وبعد ذلك ، يتصرف iPad مثل المعتاد (IE يدور بشكل صحيح إلى الصورة والمناظر الطبيعية عند تدويره).

شاشة عرض التنبيه أدناه. غريب غريب. أي أفكار لماذا هذا يمكن أن يحدث؟ يحدث ذلك فقط عند التحميل في المناظر الطبيعية - التحميل في الصورة ثم الدوران إلى المناظر الطبيعية يعمل بشكل جيد.Landtrait!

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

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

ثم تم ترك وحدة التحكم الرئيسية في العرض بدعم افتراضي من "لا" لتوجهات المناظر الطبيعية ، لكن وحدة التحكم في العرض المضافة حديثًا (والتي يتم سؤالها أيضًا عن التوجهات) تستجيب الآن بنعم بسعادة.

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

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

كان الإصلاح في حالتي هو ببساطة وضع وحدة تحكم أخرى بتأخير طفيف. استخدام performSelector:withObject:afterDelay. - يبدو أن 0 يعمل ولكني أضعها في 1 للتأكد. يبدو غريبًا بعض الشيء ، مع ظهور VC الرئيسي ثم VC الآخر ، لكنه أفضل من ما سبق.

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

المحلول

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

انظر أعلاه منشور للحصول على تفاصيل عن الحل.

نصائح أخرى

استخدم UialertController بدلاً من UialertView. لدي نفس المشكلة وهي ثابتة الآن.

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