如何更改NSWSow的NSScreen

时间:2012-04-17 17:21:50

标签: cocoa nswindow nswindowcontroller

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

2 个答案:

答案 0 :(得分:5)

我无法得到太多的工作答案。我最终做的是继承NSWindow,然后重写constrainFrameRect:toScreen:。这将自动在应用程序的“主屏幕”上打开新窗口。

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

答案 1 :(得分:1)

我不知道你为什么会有这种行为但你可以通过带有NSScreen参数的initWithFrame方法来改变它。