首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除UIWindow?

如何删除UIWindow?
EN

Stack Overflow用户
提问于 2010-12-28 15:47:31
回答 7查看 39.9K关注 0票数 36

我认为这和[myWindow resignKeyWindow][self.window makeKeyAndVisible]一样简单,但我猜…并非如此你们知道该怎么做吗?

谢谢:)

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-02-27 08:00:37

不要直接调用-resignKeyWindow,当你的UIWindows被移除时,它会被重写以执行一些代码。为了删除旧窗口,您需要创建新的UIWindow实例并将其设置为-makeKeyAndVisible,旧窗口将重新标记其关键状态。在iOS 4中,如果你没有任何对它的引用,它甚至会对你的旧UIWindow进行垃圾回收。在iOS 3.x中这样做会产生灾难性的影响。警告过你。

票数 16
EN

Stack Overflow用户

发布于 2013-01-19 01:05:02

隐藏窗口的正确方法是将hidden属性设置为YES。要从nil应用程序的windows属性中删除它,只需释放窗口(在ARC中,将所有引用设置为nil)。

当然,您可能希望此时有另一个窗口。

票数 96
EN

Stack Overflow用户

发布于 2020-01-30 22:42:52

下面是如何以向后兼容的方式删除iOS 13上的UIWindow。在支持多窗口的iOS 12、iOS 13、iPadOS上进行了测试:

代码语言:javascript
复制
extension UIWindow {
    func dismiss() {
        isHidden = true

        if #available(iOS 13, *) {
            windowScene = nil
        }
    }
}

用法:

代码语言:javascript
复制
// Detect key window
let keyWindow = UIApplication.shared.windows.first { $0.isKeyWindow }

// Dismiss key window (if any)
keyWindow?.dismiss()
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4544489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档