我有一個Cocoa應用程序,它使用NSAlert
類來顯示應用程序模式警報。我希望警報窗口能浮在所有其他應用程序的窗口之上。這可以用NSAlert
完成,還是我需要實現我自己的窗口?可以使用NSAlert創建浮動窗口嗎?
我不知道這是否有任何問題,但應用程序是一個代理應用程序(LSUIElement
爲true)作爲NSStatusItem
實施。 (有關應用程序的詳細信息,包括源代碼,看看<here>。)
這是顯示警告代碼:
- (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];
但NEIT如果我點擊另一個應用程序的窗口,那麼她的窗口會讓窗口留在其他窗口上方我懷疑runModal
只是不尊重這些設置。
每當runModal被調用它重置窗口級別,不知道是否有幫助... – cobbal 2009-04-19 13:53:37