Ho un'applicazione Cocoa che visualizza un avviso modale dell'applicazione utilizzando la classe NSAlert
. Mi piacerebbe che la finestra di avviso galleggi sopra tutte le finestre di altre applicazioni. Questo può essere fatto con NSAlert
o devo implementare la mia finestra?È possibile utilizzare NSAlert per creare una finestra mobile?
Non so se ciò sia importante, ma l'applicazione è un'applicazione agente (LSUIElement
è vera) implementata come NSStatusItem
. (Per maggiori informazioni sulla app, incluso il codice sorgente, guarda <here>.)
Qui è il codice che consente di visualizzare l'avviso:
- (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) {
// ...
}
}
Ho provato a mettere questo prima della runModal
chiamata:
[[alert window] setFloatingPanel:YES];
ho anche provato questo:
[[alert window] setLevel:NSFloatingWindowLevel];
Ma neit lei di quelli fa rimanere la finestra sopra gli altri se faccio clic sulla finestra di un'altra applicazione. Sospetto che l'runModal
non rispetti queste impostazioni.
ogni volta che runModal viene chiamato reimposta il livello della finestra, non è sicuro se questo aiuti ... – cobbal