objective c - ماتفتح - مزايا ومشكلات وأمثلة على إضافة UIWindow آخر إلى تطبيق iOS؟



تحميل الملاحظات للايفون (2)

بدءًا من إجابة روب ، لعبت دورًا قليلاً وأريد كتابة بعض الملاحظات للآخرين الذين يحاولون الحصول على معلومات حول هذا الموضوع:

  • ليست مشكلة على الإطلاق لإضافة UIWindow آخر. مجرد خلق واحد و makeKeyAndVisible . فعله.
  • أزلها عن طريق جعل نافذة أخرى مرئية ، ثم حررها التي لا تحتاج إليها بعد الآن.
  • النافذة التي هي "مفتاح" يتلقى جميع المدخلات لوحة المفاتيح.
  • UIWindow يغطي كل شيء ، حتى UIWindow ، UIWindow ، الخ. الرائعة!
  • UIWindow دائمًا صورة ضمنيًا. لا تدور. سيكون عليك إضافة وحدة تحكم كجهاز تحكم جذري في النافذة الجديدة والسماح بتدوير المقبض. (تمامًا مثل النافذة الرئيسية)
  • يحدد مستوى النافذة كيف يتم عرض "عالية". قم UIWindowLevelStatusBar إلى UIWindowLevelStatusBar يغطي كل شيء. تعيين ممتلكات hidden إلى NO.
  • يمكن استخدام UIWindow الثاني لجلب وجهات النظر على الشاشة التي تطفو فوق كل شيء. دون إنشاء وحدة تحكم وهمية فقط لتضمين ذلك في UIPopoverController .
  • يمكن أن يكون مفيدا بشكل خاص على iPhone حيث لا يوجد جهاز تحكم popover ولكن قد ترغب في محاكاة شيء مثله.
  • ونعم ، حلّت بالطبع مشكلتي: إذا استقال التطبيق من التنشيط ، فأضف نافذة تغطية على ما يظهر حاليًا لمنع iOS من التقاط لقطة شاشة لمحتوى التطبيق الحالي.

https://src-bin.com

لقد تساءلت مؤخرًا عن حقيقة أن تطبيق iOS يحتوي على UIWindow واحدة UIWindow . لا يبدو أن هناك مشكلة في إنشاء UIWindow أخرى UIWindow على الشاشة.

سؤالي هو نوع من الغموض ، لكني مهتم بـ:

  • ما الذي يمكن أن UIWindow مع UIWindow ثاني لا يمكن القيام به بطرق أخرى؟
  • ما يمكن أن تذهب الخطأ عند استخدام عدة حالات UIWindow ؟
  • لقد رأيت أن الأشخاص يستخدمون UIWindow ثاني لعرض popover مثل مشاهدات على iPhone. هل هذه طريقة جيدة لفعلها؟ لماذا ا؟ لما لا؟
  • هل هناك أمثلة أخرى حيث يجعل من المعقول أن يكون لديك UIWindow آخر؟

هذا ليس لأنني في عداد المفقودين شيء. لم أشعر أبدًا بالحاجة إلى إنشاء UIWindow أخرى من UIWindow ولكن ربما كان ذلك سيسمح بأشياء مذهلة لست على دراية بها! :-)

آمل أن يساعدني ذلك في حل هذه المشكلة: أحتاج إلى إضافة "عرض الغلاف" على أي شيء معروض حاليًا. يجب أن تعمل أيضًا إذا كان هناك بالفعل واحد أو أكثر من وحدات التحكم المشروطة المقدمة. إذا قمت بإضافة UIView إلى عرض وحدة التحكم الجذر ، فإن وحدات التحكم المشروطة تجلس في المقدمة ، وكذلك أجهزة تحكم popover. إذا قمت بتقديم عرض الغلاف بشكل مألوف وهناك وحدة تحكم مشروطة بالفعل ، فسيتم تغطية جزء فقط من الشاشة.


Answer #1

يمكن أن تطفو UIWindow فوق عناصر واجهة المستخدم الأخرى مثل لوحة مفاتيح النظام.

لمعالجة الفقرة الأخيرة: قم بإنشاء UIWindow مع نفس الإطار UIWindow الرئيسية. قم بتعيين الخاصية windowLevel الخاص به إلى UIWindowLevelStatusBar . تعيين ممتلكات hidden إلى NO .





uiwindow