Преимущества, проблемы, примеры добавления другого UIWindow в приложение iOS?
недавно я задавался вопросом о том, что это приложение iOS имеет только один UIWindow.
Это не кажется проблемой, чтобы создать еще один UIWindow и поместите его на экране.
мой вопрос немного расплывчатый, но меня интересует:
- что я мог бы достичь со вторым
UIWindowчто нельзя сделать другими способами? - что может пойти не так при использовании нескольких
UIWindowэкземпляров? - Я видел, что люди используют 2-й
UIWindowдля отображения popover, как представления на iPhone. Это хороший способ сделать это? Зачем? Почему бы и нет? - есть ли другие примеры, где имеет смысл иметь еще один
UIWindow?
дело не в том, что я что-то упускаю. Я никогда не чувствовал необходимости создавать еще один UIWindow пример, но, возможно, это позволит делать удивительные вещи, о которых я не знаю! : -)
Я надеюсь, что это может помочь мне решить эту проблему:
Мне нужно добавить " вид обложки" над тем, что отображается в данный момент. Он также должен работать, если уже есть один или несколько модальных контроллеров. Если я добавлю UIView в представлении корневого контроллера модальные контроллеры находятся сверху, так же как и контроллеры popover.
Если я представляю вид обложки модально, и уже есть модальный контроллер, покрыта только часть экрана.
2 ответа:
A
UIWindowможет плавать над другими элементами пользовательского интерфейса, такими как системная клавиатура.чтобы обратиться к вашему последнему абзацу: сделайте
UIWindowс той же рамкой, что и Ваше главное окно. Установите егоwindowLevelсвойствоUIWindowLevelStatusBar. Установите егоhiddenсвойствоNO.
начиная с ответа Роба я немного поиграл и хотел бы записать некоторые заметки для других, пытаясь получить информацию по этой теме:
- это не проблема, чтобы добавить еще один
UIWindow. Просто создайте один иmakeKeyAndVisible. Сделанный.- удалите его, сделав видимым другое окно, а затем отпустите тот, который вам больше не нужен.
- окно, которое является "ключом", получает весь ввод с клавиатуры.
UIWindowохватывает все, даже модал, эклеры и т. д. Блестяще!UIWindowвсегда портрет неявно. Он не вращается. Вам нужно будет добавить контроллер в качестве корневого контроллера нового окна и позволить ему обрабатывать вращение. (Как в главном окне)- уровень окна определяет, как" высокий " он отображается. Установите его в
UIWindowLevelStatusBarчтобы он покрывал все. Установите егоhiddenсвойство "нет".- 2-й
UIWindowможет использоваться для отображения видов на экране, которые плавают поверх всё. Без создания фиктивного контроллера просто встроить это вUIPopoverController.- это может быть особенно полезно на iPhone, где нет контроллера popover, но где вы можете имитировать что-то подобное.
- и да, это решило, конечно, мою проблему: если приложение отказывается от активации, добавьте окно обложки над тем, что в настоящее время показано, чтобы предотвратить iOS от снятия скриншота текущего содержимого вашего приложения.