我在面试中多次被问到这个问题,到处搜索都没有得到正确的答案。所以最后在这里发布这个问题。
你可能会经历这个。
是的,您可以有多个窗口。关键窗口是接收用户输入的窗口。
从罗布的回答开始,我玩了一下,想为其他试图获取有关此主题的信息的人写下一些注释:
UIWindow
根本不是问题。只需创建一个
和makeKeyAndVisible
。完成。UIWindow
涵盖了所有内容,甚至是模态框、弹出窗口等。太棒了!UIWindow
总是隐式地处于肖像状态。它不旋转。UIWindow
可用于在屏幕上显示浮动在所有内容之上的视图。无需创建虚拟控制器即可将其嵌入到 UIPopoverController 中。一般一个应用程序只需要1个UIWindow,但仍然有一些场景需要在一个应用程序中使用多个UIWindow。
例如,您希望在系统AlertViews顶部显示一个视图,或者可以使用默认键盘。
UIWindows 是特殊的 UIView,其显示顺序由 .windowLevel 属性控制。
您不需要添加新的 UIWindow 作为任何视图的子视图。您可以简单地创建一个新的 UIWindow 并根据您赋予它的级别调用窗口 setHidden:NO 或窗口 makeKeyAndVisible。
定义了三个默认窗口枚举级别:
UIWindowLevelNormal
UIWindowLevelStatusBar
UIWindowLevelAlert
当然可以有多个窗口。只是,一次只能显示一个,那就是
keyWindow
。您可以将多个窗口存储在数组或其他任何形式中,并在您想要显示它们时将它们设为 keyWindow
。
是的,阅读 @Mannopson 建议的文档,它非常有用。