我正在将Core Data和Cloud Kit一起使用,因此必须在应用程序启动期间检查iCloud用户状态。如果出现问题,我想向用户发出一个对话框,直到现在我都使用UIApplication.shared.keyWindow?.rootViewController?.present(...)进行对话。

在Xcode 11 beta 4中,现在有一条新的弃用消息,告诉我:


  iOS 13.0中已弃用“ keyWindow”:不应将其用于支持多个场景的应用程序,因为它会返回所有已连接场景的关键窗口


我该如何显示对话框?

最佳答案

这是我的解决方案:

let keyWindow = UIApplication.shared.connectedScenes
        .filter({$0.activationState == .foregroundActive})
        .map({$0 as? UIWindowScene})
        .compactMap({$0})
        .first?.windows
        .filter({$0.isKeyWindow}).first


用法,例如:

keyWindow?.endEditing(true)

10-04 11:00