makeKeyAndOrderFront只执行后者

时间:2009-10-27 04:04:57

标签: cocoa nswindow

我正在尝试使用makeKeyAndOrderFront从另一个窗口打开一个窗口。出现新窗口,但没有获得焦点。

主窗口的代码是:

#import "SecondWindowController.h"
@implementation FirstWindowController
-(IBAction)showSecondWindow:(id)sender
{
  if (!secondWindowController)
    secondWindowController = [[SecondWindowController alloc] init];
  [[secondWindowController window] makeKeyAndOrderFront:self];
}

SecondWindowController是NSWindowController,如下所示:

@implementation SecondWindowController
-(id)init
{
  if (![super initWithWindowNibName:@"SecondWindow"])
    return nil;
  return self;
}

我也尝试将[secondWindowController showWindow:self]放在makeKeyAndOrderFront之前,但它没有任何区别。

3 个答案:

答案 0 :(得分:8)

您确定SecondWindowController的窗口是否已连接到NIB中的窗口?只需加载NIB即可显示窗口,即使插座未连接也是如此。

答案 1 :(得分:6)

您使用的是无边框窗口吗?如果是这样,你需要覆盖canBecomeKeyWindow并返回YES

答案 2 :(得分:2)

试试这个:

if (!secondWindowController)
    secondWindowController = [[SecondWindowController alloc] init];    
NSApplication *thisApp = [NSApplication sharedApplication];
[thisApp activateIgnoringOtherApps:YES];
[[secondWindowController window] makeKeyAndOrderFront:self];