У меня есть приложение Cocoa, которое отображает модальное предупреждение приложения с использованием класса NSAlert
. Я бы хотел, чтобы окно предупреждения плавало над окнами всех других приложений. Можно ли это сделать с помощью NSAlert
или мне нужно реализовать собственное окно?
Я не знаю, имеет ли это какое-либо значение, но приложение представляет собой приложение-агент (верно LSUIElement
), реализованное как NSStatusItem
. (Дополнительную информацию о приложении, включая исходный код, см. ‹здесь>.)
Вот код, который отображает предупреждение:
- (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) {
// ...
}
}
Я пытался поставить это перед вызовом runModal
:
[[alert window] setFloatingPanel:YES];
Я также пробовал это:
[[alert window] setLevel:NSFloatingWindowLevel];
Но ни один из них не заставляет окно оставаться выше других, если я щелкаю окно другого приложения. Я подозреваю, что runModal
просто не соблюдает ни одну из этих настроек.