SwiftUI:如何在 Objective-C 中获取 window

SwiftUI: How to get window in Objective-C

let scene = UIApplication.shared.connectedScenes.first
if let sd: SceneDelegate = (scene?.delegate as? SceneDelegate) {
    let window = sd.window
}

这是在Swift,我想把它转换成Objective-C。我试过这个:

UIScene *scene = [[[[UIApplication sharedApplication]connectedScenes]allObjects]firstObject];

但是现在没有SceneDelegate;在 Objective-C 中有 UIKit 的 UIWindowSceneDelegate.

我也无法访问 UIScenedelegate。 Scenedelegate 在 Swift 中,我正在尝试在 objective-c 中获取 window 但现在我无法在 swiftUI 中访问 window。

检查 scene.delegate 以确保它符合协议,然后将协议强制转换到它上面,以便编译器允许您使用协议属性 and/or 方法。

UIScene *scene = [[[[UIApplication sharedApplication] connectedScenes] allObjects] firstObject];

if([scene.delegate conformsToProtocol:@protocol(UIWindowSceneDelegate)]){
    UIWindow *window = [(id <UIWindowSceneDelegate>)scene.delegate window];
}