我不知道从哪里开始尝试解决这个问题,但也许有人可以为我指明正确的方向。我有一个状态项应用程序,单击时会显示一个弹出框,一些用户交互会产生一个 NSUserNotification 来警告/通知更改或错误。但是当通知出现时,它会显示在弹出框的后面,因此如果它们覆盖,用户将无法阅读它所说的内容。
有没有办法强制通知出现在弹出框的前面?喜欢将通知放在前面。
编辑:这是一张图片,显示在用户输入错误后隐藏在弹出框后面的部分通知。我真的不想隐藏弹出框以显示错误通知。
我已经尝试了湖 makeKeyAndOrderFront、activateIgnoringOtherApps、你在窗口上使用的东西的类型,但它们都不适用于 NSUserNotification,所以它不起作用。
编辑 2:我应该注意,为了让弹出框在调用时出现在所有内容的前面,我在弹出框上使用了 activateIgnoringOtherApps 和 becomeFirstResponder,但即使摆脱它仍然会显示弹出框后面的通知。
编辑3:弹出框相对于状态栏中的状态项显示,使用
[[self popover] showRelativeToRect:statusItem.view.bounds ofView:statusItem.view preferredEdge:NSMaxYEdge];
单击时,状态项调用执行此操作的方法:
- (void)openPopover:(id)sender {
if (![_popover isShown] | (_popoverIsClosing)) {
[_preferencesWindow close];
[NSApp activateIgnoringOtherApps:YES];
[_popover becomeFirstResponder];
[statusItemView setHighlighted:YES];
[[self popover] showRelativeToRect:statusItem.view.bounds ofView:statusItem.view preferredEdge:NSMaxYEdge];
[self performSelector:@selector(defaultTextField)];
NSLog(@"popover opened");
} else {
[_preferencesWindow close];
[NSApp activateIgnoringOtherApps:NO];
NSLog(@"popover closed");
[_popover close];
[_popover resignFirstResponder];
[[NSApplication sharedApplication] hide: self];
[statusItemView setHighlighted:NO];
}
}
谢谢您的帮助。