2010-05-12 12 views
13

Sto cercando di aprire un NSWindow utilizzando il seguente codice:Come posso aprire una finestra NSW e avere la finestra selezionata e messa a fuoco?

NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"]; 
[window showWindow:nil]; 

la finestra si apre bene, ma la finestra precedente è ancora il MainWindow ea fuoco. Ho provato il seguente codice per forzare la finestra principale e non funziona. La finestra ha ancora una barra del titolo disabilitato e non accetta eventi chiave ecc

[self.window makeKeyAndOrderFront:self]; 
[self.window makeMainWindow]; 

L'unico modo mi sembra di essere in grado di ottenere la finestra precedente perdere la concentrazione è se chiudo la finestra dopo aver chiamato ShowWindow: con [[NSApp mainWindow] close];

Qualche idea?

+4

Non so perché ho ricevuto un -1 qui, qualcuno mi ha fatto sapere come avrei potuto migliorare la domanda? – Luke

risposta

13

makeKeyAndOrderFront: è la strada da percorrere. Sei sicuro che self.window e window riferiscano lo stesso oggetto?

+0

Grazie ma ancora non funziona. Ho aggiunto la [finestra makeKeyAndOrderFront: self]; chiama subito dopo lo showWindow: e ancora non funziona. Dovrei chiamare questo da qualche altra parte? – Luke

+0

'makeKeyAndOrderFront:' è il metodo giusto. Non dovrebbe importare dove lo chiami. Qualcos'altro è il problema Ad esempio, la finestra principale potrebbe essere modale, o qualcosa si rifiuta di rinunciare allo stato di primo risponditore. –

+1

Sì, c'era un problema all'interno del pennino, vedere la mia risposta per la soluzione. – Luke

8

Ho risolto il problema assegnando WindowController al proprietario del file pennino, invece di avere un oggetto NSWindowController separato all'interno del pennino.

+0

Vorrei aggiungere un punto a questo, ho dimenticato di collegare la finestra di uscita al mio NSWindow in Interface Builder. Questo ha portato il codice a non funzionare per me, quindi a chiunque stia leggendo questo, non dimenticare di collegare la presa finestra. Un semplice errore, ma che può lasciarti frustrato per secoli – Supertecnoboff

Problemi correlati