makeKeyAndOrderFront fa solo quest'ultimo
Domanda
Sto cercando di aprire una finestra dall'altra usando makeKeyAndOrderFront. Viene visualizzata la nuova finestra, ma non riceve lo stato attivo.
Il codice per la finestra principale è:
#import "SecondWindowController.h"
@implementation FirstWindowController
-(IBAction)showSecondWindow:(id)sender
{
if (!secondWindowController)
secondWindowController = [[SecondWindowController alloc] init];
[[secondWindowController window] makeKeyAndOrderFront:self];
}
SecondWindowController è un NSWindowController, come segue:
@implementation SecondWindowController
-(id)init
{
if (![super initWithWindowNibName:@"SecondWindow"])
return nil;
return self;
}
Ho anche provato a mettere [secondWindowController showWindow: self]
prima di makeKeyAndOrderFront
ma non fa differenza.
Soluzione
Hai verificato che l'uscita della finestra per SecondWindowController sia collegata alla finestra nel tuo NIB? La finestra potrebbe essere visualizzata semplicemente caricando il NIB, anche se la presa non è collegata.
Altri suggerimenti
Stai usando una finestra senza bordi? In tal caso, devi sostituire canBecomeKeyWindow e restituire YES
Prova questo:
if (!secondWindowController)
secondWindowController = [[SecondWindowController alloc] init];
NSApplication *thisApp = [NSApplication sharedApplication];
[thisApp activateIgnoringOtherApps:YES];
[[secondWindowController window] makeKeyAndOrderFront:self];