如何获取多窗口 SceneDelegate Xcode 11 的当前 keywindow 等效项?

2023-11-21

我正在将适用于 iPadOS 的 iOS13 应用程序转换为 SceneDelegate(多窗口)。

如何从当前SceneDelegate获取当前UIWindow?

我知道 a 可以使用访问当前场景UIView.window or UIViewController.view.window,但我有一个非 UI 类(AppDelegate),我需要在其中获取窗口(iOS12 之前的 keyWindow)以在所有内容之上显示小吃栏。

我曾经做[UIApplication sharedApplication].keyWindow但现在,当然这是错误的。


斯威夫特 5.x / iOS 13.x

受到许多解决方案的启发,为了找回我的旧窗口属性(在连接的场景中搜索它),我实现了一些扩展:

extension UIApplication {
    var currentWindow: UIWindow? {
        connectedScenes
        .filter({$0.activationState == .foregroundActive})
        .map({$0 as? UIWindowScene})
        .compactMap({$0})
        .first?.windows
        .filter({$0.isKeyWindow}).first
    }
}

Usage:

if let window = UIApplication.shared.currentWindow { 
   // do whatever you want with window
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取多窗口 SceneDelegate Xcode 11 的当前 keywindow 等效项? 的相关文章

随机推荐

  • 在Android中编辑文本时获取光标位置?

    我正在使用自定义 EditText 视图 我已经重写了 OnKeyUp 事件并且能够捕获 Enter 键按下 现在我的要求是 当用户输入文本 嗨 你好吗 然后将光标保留在 are 一词后面并按 Enter 键 我需要获取光标位置 以便在按下
  • 在多线程环境中使用 HttpClient 的最佳实践

    一段时间以来 我一直在多线程环境中使用 HttpClient 对于每个线程 当它发起连接时 都会创建一个全新的 HttpClient 实例 最近我发现 使用这种方法会导致用户打开的端口过多 并且大部分连接处于TIME WAIT状态 http
  • 如何使用 Eclipse 逐行调试 Android 应用程序?

    我熟悉 VS Net IDE 它对调试有很多支持 但android开发对我来说是新鲜事 我正在使用 Eclipse IDE 我想知道如何像在 Net IDE 中一样逐行调试 Android 应用程序 目前我正在使用日志窗口 但我对此并不满意
  • 运行 cordova 平台添加 android 时生成错误

    我正在尝试根据以下链接创建一个 Android PhoneGap 项目 http docs phonegap com en edge guide platforms android index md html 但是 当我运行命令时 cord
  • 是否可以在 ASP.NET ListView 控件中进行自定义分组?

    你只能在ListView中定义一个GroupItemCount 但是如果你想根据数据源中项目的属性进行分组怎么办 有点像临时分组依据 数据源按此属性排序 我见过一些示例 其中 ItemTemplate 中的某些标记是有条件显示的 但如果可能
  • Rails 路由可在单个应用程序上处理多个域

    尽管这里和其他地方有几个类似的问题 但我一直无法找到解决此问题的可行解决方案 这个问题似乎在 Rails 3 中还没有得到解答 所以这里是 我有一个应用程序 当前允许用户创建自己的包含应用程序实例的子域 在 Rails 2 中 您最好使用
  • Rails 3:调用控制器内的函数

    如果我想在控制器内部调用函数 我应该把它们放在哪里 如果您希望它位于控制器本地 那么您所需要做的就是将其添加到您想要使用的控制器中 private def myfunction function code end 对于所有控制器 您可以将其
  • 用户态自动装箱?

    是否可以为您自己的类实现自动装箱 为了说明我的示例 我可能想写以下内容 Foo foo lolcat 这就是 Java 在幕后要做的事情 根据我自己的定义 在某个地方 以某种方式 Foo foo new Foo foo setLolcat
  • 如何动态渲染新的 Twitter 小部件?

    如果我在 Twitter 上注册一个小部件 我会得到以下代码 a class twitter timeline href https twitter com vinto60utd Tweets by vinto60utd a
  • Sequelize — 对 DATE 字段使用 UNIX 时间戳

    有没有办法强制 Sequelize 使用 UNIX 时间戳作为默认时间格式both对于createdAt updatedAt时间戳and对于自定义的 Sequelize DATE 字段类型 Thanks 附 我正在使用 MySQL Whil
  • Java:优先级队列

    我有一个java程序 它是这样的 公共类 PriorityQueue 示例 public static void main String args PriorityQueue
  • 哪种方法是最好的? AutoMapper 反对隐式(C# 参考)

    Automapper 是一种匹配类型的方法 理想情况下当您想要映射模型及其视图模型时 但这与我们在 C 中使用隐式实现的方法不一样吗 假设两个模型具有相同的属性但名称不同 在这种情况下 您需要在 AutoMapper 中指定模型之间链接的模
  • ios 上离子范围无法点击

    我在跨平台项目中使用离子 范围 输入 对于android和PC浏览器 如果我点击远离滑块节点的区域 滑块节点将跳转到我点击的位置 并且值将被更新 但对于 IOS 当我单击远离滑块节点的区域时 没有发生任何值变化 这也使得我的滑块很难点击 我
  • 条件恩弗斯审计

    我有一个要求 我只想审核状态字段更改的记录 我遵循了文档章节教程 15 8 条件审计 第 1 步 关闭自动 Envers 事件侦听器注册 我有以下内容
  • 如何使用 python 关闭网络浏览器

    我已经使用打开了一个网络浏览器窗口webbrowser open url 在 python 中 现在我想关闭使用 python 打开的网络浏览器 可以这样做吗 没有webbrowser close 您可以使用以下代码关闭任务 在Window
  • ShowDialog 使应用程序窗口从 Windows 的 Alt-Tab 列表中消失?

    我是 WPF 新手 我正在尝试从主窗口内打开模式对话框 public partial class MainWindow Window protected void OpenCommandExecuted object target Exec
  • 使用 jQuery 获取 div 的背景图像。是否有内置方法可以去掉 url() 部分?

    我正在使用此代码来获取背景图像div var bgImage content css backgroundImage 这是回归url 28http example com images layout content trans png 29
  • Java 中的非阻塞套接字写入与阻塞套接字写入

    为什么有人更喜欢阻塞写入而不是非阻塞写入 我的理解是 如果您想确保另一方在 write 方法返回后收到 TCP 数据包 则只需要阻止 write 但我什至不确定这是否可能 你必须冲洗并且冲洗必须冲洗底层操作系统写套接字缓冲区 那么非阻塞套接
  • 在 Android 后台使用相机

    我正在尝试将照片从相机中投入使用 Override public void onCreate super onCreate android os Debug waitForDebugger myCamera Camera open Surf
  • 如何获取多窗口 SceneDelegate Xcode 11 的当前 keywindow 等效项?

    我正在将适用于 iPadOS 的 iOS13 应用程序转换为 SceneDelegate 多窗口 如何从当前SceneDelegate获取当前UIWindow 我知道 a 可以使用访问当前场景UIView window or UIViewC