关于可可:makeKeyAndOrderFront只做后者

makeKeyAndOrderFront only does the latter

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

主窗口的代码是:

1
2
3
4
5
6
7
8
#import"SecondWindowController.h"
@implementation FirstWindowController
-(IBAction)showSecondWindow:(id)sender
{
  if (!secondWindowController)
    secondWindowController = [[SecondWindowController alloc] init];
  [[secondWindowController window] makeKeyAndOrderFront:self];
}

SecondWindowController是一个NSWindowController,如下所示:

1
2
3
4
5
6
7
@implementation SecondWindowController
-(id)init
{
  if (![super initWithWindowNibName:@"SecondWindow"])
    return nil;
  return self;
}

我也尝试过将[secondWindowController showWindow:self]放在makeKeyAndOrderFront之前,但这没什么区别。


您是否确定SecondWindowController的窗口出口已连接到NIB中的窗口?即使未连接outlets,也可以仅通过加载NIB来显示该窗口。


您是否正在使用无边界窗口?如果是这样,则需要覆盖canBecomeKeyWindow并返回YES


尝试一下:

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