Tengo una aplicación Cocoa que muestra una alerta de aplicación modal utilizando la clase NSAlert
. Me gustaría que la ventana de alerta flote sobre todas las ventanas de otras aplicaciones. ¿Se puede hacer esto con NSAlert
, o tengo que implementar mi propia ventana?¿Se puede utilizar NSAlert para crear una ventana flotante?
No sé si algo de esto importa, pero la aplicación es una aplicación de agente (LSUIElement
es verdad) implementada como NSStatusItem
. (Para obtener más información sobre la aplicación, incluyendo el código fuente, busque <here>.)
Aquí está el código que muestra la alerta:
- (void)showTimerExpiredAlert {
[NSApp activateIgnoringOtherApps:YES];
NSAlert *alert = [[NSAlert alloc] init];
[alert setAlertStyle:NSInformationalAlertStyle];
[alert setMessageText:NSLocalizedString(@"Menubar Countdown Complete", @"Expiration message")];
[alert setInformativeText:NSLocalizedString(@"The countdown timer has reached 00:00:00.",
@"Expiration information")];
[alert addButtonWithTitle:NSLocalizedString(@"OK", @"OK button title")];
[alert addButtonWithTitle:NSLocalizedString(@"Restart Countdown...", @"Restart button title")];
NSInteger clickedButton = [alert runModal];
[alert release];
if (clickedButton == NSAlertSecondButtonReturn) {
// ...
}
}
He intentado poner esto antes de la runModal
llamada:
[[alert window] setFloatingPanel:YES];
también he intentado esto:
[[alert window] setLevel:NSFloatingWindowLevel];
Pero neit el de ella hace que la ventana se mantenga por encima de otras si hago clic en la ventana de otra aplicación. Sospecho que runModal
simplemente no respeta ninguna de esas configuraciones.
cada vez que se llama runModal, restablece el nivel de la ventana, no estoy seguro si eso ayuda ... – cobbal