3

我编写了一个没有持久窗口或标准菜单的菜单应用程序。当另一个应用程序获得焦点并且我使用 menulet 触发要打开的窗口时,它会出现在前台应用程序的后面(但在屏幕上出现的任何其他内容之上)。

基本上...

-(IBAction)aboutWindow:(id)sender {
    [NSBundle loadNibNamed:@"About" owner:self];
}

谁能指出我正确的方向,以便我可以让这个窗口在最初产生时出现在所有其他应用程序之上?

[编辑]

我尝试使用自定义 NSWindowController 并链接窗口,并 awakeFromNib 调用 makekeyandorderfront 方法,但这没有做任何事情。

我现在有而不是 NSBundle 调用:

NSWindowController* awc = [[NSWindowController alloc] initWithWindowNibName:@"About"];
[[awc window] makeKeyAndOrderFront:nil];

这产生了窗口,但仍然没有使它在前景中

4

2 回答 2

2

弄清楚了。窗口没有任何问题,它是应用程序。它不在前台,因为它的性质是在生成此菜单之前没有窗口的菜单。最终代码:

-(IBAction)aboutWindow:(id)sender {
    NSWindowController* awc = [[NSWindowController alloc] initWithWindowNibName:@"About"];
    [[awc window] makeKeyAndOrderFront:nil];
    [[NSApplication sharedApplication] arrangeInFront:nil];
}
于 2010-04-26T18:08:44.407 回答
1

你可以试试makeKeyAndOrderFront:

例如,在 About 窗口的控制器中 - 假设控制器对窗口的引用为myWindow

- (void)awakeFromNib 
{
    [myWindow makeKeyAndOrderFront:nil];
}
于 2010-04-26T17:08:26.023 回答