2010-05-12 8 views
13

estoy tratando de abrir un NSWindow usando el siguiente código:¿Cómo abro una NSWindow y selecciono la ventana y la enfoco?

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

La ventana se abre bien, pero la ventana anterior sigue siendo el mainWindow y en el enfoque. He intentado el siguiente código para forzar la ventana principal y no funciona. La ventana todavía tiene una barra de título desactivado y no está aceptando eventos clave, etc.

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

La única manera que parecen ser capaces de obtener la ventana anterior para perder el enfoque es si cierro la ventana después de llamar SHOWWINDOW: con [[NSApp mainWindow] cerrar];

¿Alguna idea?

+4

No estoy seguro de por qué recibí un -1 aquí, ¿alguien me dejó saber cómo podría mejorar la pregunta? – Luke

Respuesta

13

makeKeyAndOrderFront: es el camino a seguir. ¿Estás seguro de que self.window y window hacen referencia al mismo objeto?

+0

Gracias pero todavía no funciona. Agregué la [ventana makeKeyAndOrderFront: self]; llame directamente después de showWindow: y aún no funciona. ¿Debería llamar a esto en otro lugar? – Luke

+0

'makeKeyAndOrderFront:' es el método correcto. No debería importar dónde lo llames. Algo más es el problema. Por ejemplo, la ventana principal puede ser modal, o algo se niega a abandonar el estado de primera respuesta. –

+1

Sí, hubo un problema en el plumín, consulte mi respuesta para la solución. – Luke

8

Resolví el problema asignando el WindowController al propietario del archivo nib, en lugar de tener un objeto NSWindowController separado dentro del plumín.

+0

Me gustaría agregar un punto a esto, me olvidé de conectar la salida de la ventana a mi NSWindow en Interface Builder. Esto me llevó a que el código no funcionara para mí, así que para cualquiera que lea esto, no se olvide de conectar el enchufe de la ventana. Un simple error, pero que puede dejarte frustrado por siglos lol – Supertecnoboff

Cuestiones relacionadas