【发布时间】:2019-11-18 14:11:38
【问题描述】:
我知道 NSWindow 在 Mac Catalyst 中没有正式可用,但我已经看到了一些通过NSClassFromString 和valueForKeyPath 访问它的帖子和成功案例。但是,我一直无法让它工作,因为它总是返回 nil。
guard let nsWindows = NSClassFromString("NSApplication")?.value(forKeyPath: "sharedApplication.windows") as? [AnyObject] else {
return nil
}
也曾尝试在目标 c 中使用
NSArray *const nsWindows = [NSClassFromString(@"NSApplication") valueForKeyPath:@"sharedApplication.windows"];
但是每次都是一样的结果 - nil。
是否有让它工作的技巧,或者这种方式已被关闭作为访问它的潜在方式?它可以成功获取 NSApplication 实例。但是 windows 属性始终为零。
【问题讨论】:
-
你应该在寻找场景 UIWindow
-
@LeoDabus 我需要 NSWindow 以编程方式更改窗口的大小
-
@nserror 我认为我在这个问题stackoverflow.com/questions/58526250/… 中的回答可能对你有用。
-
But the windows property is always nil.>> 这是因为你访问 NSWindow 太早了。可能还不是main/key/etc。将调用封装到DispatchQueue.main.async { }。
标签: ios swift macos mac-catalyst