cocoa - 如何更改 NSWindow 出现的 NSScreen

标签 cocoa nswindow nswindowcontroller

我有一个应用程序,它将根据按下的按钮加载几个窗口。除其中之一外,所有这些都在主屏幕(打开主窗口的屏幕)上打开。其中一个(首选项窗口)在第一个屏幕(带有菜单栏的屏幕)上打开。我无法理解它是如何做到这一点的,有没有办法更改 NSWindow 打开的屏幕?

最佳答案

我无法让 Toohtik 的答案生效。我最终做的是子类化 NSWindow,然后重写 constrainFrameRect: toScreen:。这将自动在应用程序的“主屏幕”上打开新窗口。

- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen
{
    AppDelegate *delegate = [[NSApplication sharedApplication] delegate];
    return [super constrainFrameRect:frameRect toScreen:delegate.window.screen];
}

关于cocoa - 如何更改 NSWindow 出现的 NSScreen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195977/

相关文章:

macos - 在NSToolbar中实现NSSegmentedControl来控制NSTabViewController

objective-c - (KVO) 是否可以在不知道谁在观察的情况下移除对象的所有观察者?

macos - 如何检测对任何窗口标题栏的点击?

macos - 在 Swift 中打开新窗口

swift - NSWindow 忽略位置设置

swift - 在不使用 Storyboard 的情况下从 NSWindowController 呈现模态

cocoa - 如何从 xib 文件加载并显示窗口

macos - 我应该在 Mac 应用程序上使用 Growl 吗?

ios - 在 iOS 上学习编码——swift 与 Objective C 的困境

swift - Modal NSWindow 从未发布