在Mac Catalyst中访问NSWindow

我知道NSWindow尚未在Mac Catalyst中正式可用,但我看到了几篇帖子和成功案例,它们是通过NSClassFromStringvalueForKeyPath访问它的。但是,由于它总是返回nil,所以我一直无法使它工作。

guard let nsWindows = NSClassFromString("NSApplication")?.value(forKeyPath: "sharedApplication.windows") as? [AnyObject] else {
    return nil
}

也曾尝试使用

在目标c中进行操作
NSArray *const nsWindows = [NSClassFromString(@"NSApplication") valueForKeyPath:@"sharedApplication.windows"];

但结果相同-每次都为零。

是否有一个技巧可以使它正常工作,或者这种方法是否已被关闭作为访问它的潜在方法?它可以成功获取NSApplication实例。但是windows属性始终为nil。

jixiang1986 回答:在Mac Catalyst中访问NSWindow

可以借助Dynamic轻松完成此操作:

extension UIWindow {
    var nsWindow: NSObject? {
        Dynamic.NSApplication.sharedApplication.delegate.hostWindowForUIWindow(self)
    }
}
本文链接:https://www.f2er.com/3080372.html

大家都在问