Преимущества, проблемы, примеры добавления другого 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 от снятия скриншота текущего содержимого вашего приложения.