Pregunta

¿Hay alguna forma de abrir una ventana Nsalert, establecer un delegado para la devolución de llamada de Didend y, mientras se muestra la alerta, todas las demás ventanas deben estar "deshabilitadas" (puede la ventana en sí misma pero no presionar ningún botón o cambiar ningún texto)?

¿Fue útil?

Solución

En su código nsalert, agregue

NSModalSession session = [NSApp beginModalSessionForWindow:theWindow];
[NSApp runModalSession:session];
// NSAlert stuff here ...

En tu devolución de llamada de Didend Agregar

[NSApp endModalSession:session];

Para obtener más información sobre Windows Modal Read AplicaciónLa sección "Gestión del bucle de eventos".

Actualizar:

Aquí hay un código de muestra del documento de Apple que muestra cómo ejecutar modales sin devoluciones de llamada.

NSModalSession session = [NSApp beginModalSessionForWindow:theWindow];
for (;;) {
    if ([NSApp runModalSession:session] != NSRunContinuesResponse)
        break;
    [self doSomeWork];
}
[NSApp endModalSession:session];

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top