makeKeyAndOrderFront только делает последнее - PullRequest
4 голосов
/ 27 октября 2009

Я пытаюсь открыть одно окно из другого, используя 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 ]

8 голосов
/ 27 октября 2009

Вы убедились, что оконный выход для SecondWindowController подключен к окну в вашем NIB? Окно может отображаться только при загрузке NIB, даже если розетка не подключена.

6 голосов
/ 27 октября 2009

Вы используете окно без полей? Если это так, вам нужно переопределить canBecomeKeyWindow и вернуть YES

2 голосов
/ 27 октября 2009

Попробуйте это:

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