Tôi có một ứng dụng Cocoa hiển thị cảnh báo kiểu ứng dụng bằng cách sử dụng lớp NSAlert
. Tôi muốn cửa sổ cảnh báo trôi nổi trên tất cả các cửa sổ ứng dụng khác. Điều này có thể được thực hiện với NSAlert
hoặc tôi có cần triển khai cửa sổ của riêng mình không?NSAlert có thể được sử dụng để tạo cửa sổ nổi không?
Tôi không biết có bất kỳ vấn đề nào trong số này không, nhưng đơn đăng ký là đơn đăng ký đại lý (LSUIElement
là đúng) được triển khai dưới dạng NSStatusItem
. (Để biết thêm về các ứng dụng, bao gồm cả mã nguồn, nhìn <here>.)
Dưới đây là đoạn code mà sẽ hiển thị cảnh báo:
- (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) {
// ...
}
}
Tôi đã thử đặt này trước khi runModal
gọi:
[[alert window] setFloatingPanel:YES];
tôi cũng đã thử điều này:
[[alert window] setLevel:NSFloatingWindowLevel];
Nhưng neit cô ấy của những người làm cho cửa sổ ở trên những người khác nếu tôi nhấp vào cửa sổ của ứng dụng khác. Tôi nghi ngờ runModal
chỉ không tôn trọng một trong các cài đặt đó.
bất cứ khi nào runModal được gọi là nó đặt lại mức cửa sổ, không chắc chắn nếu điều đó giúp ... – cobbal