- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道从哪里开始尝试解决这个问题,但也许有人可以给我指出正确的方向。我有一个状态项应用程序,单击时会显示一个弹出窗口,某些用户交互会生成 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];
}
}
感谢您的帮助。
最佳答案
您想要调整window.level
。
通知使用的是 18 级,因此只要您的级别较低,就不会出现此问题。
您可以使用这些默认的NSWindow.Level
.正常
= 0. float
= 3.submenu
= 3.tornOffMenu
= 3或者自定义级别NSWindow.Level(rawValue: 17)
。
需要注意的重要一点是,您应该在弹出窗口显示期间或之后设置窗口级别。否则您的设置将被重置。
您可以使用该函数从 popover.delegate
执行此操作,
func popoverDidShow(_ notification: Notification)
或者直接使用NSPopoverDidShowNotification
监听通知。
已在 macOS 10.15 上进行测试
关于objective-c - Cocoa:NSUserNotification出现在NSPopover后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25476604/
目前,当我使用 Alert 样式创建 NSUserNotification 时,除非我手动关闭它,否则它不会隐藏。 有没有办法可以在 2 秒后自动关闭/隐藏它? NSUserNotification
我的 NSUserNotification 会在我的应用程序中发生某些事情时显示以记录。即使应用程序是最前面的应用程序(即始终显示它),是否有任何方法可以显示通知? (如果我在其他应用程序中,它确实会
NSUserNotification如果用户在系统首选项中将我的应用程序的通知样式设置为“警报”,则仅显示操作按钮。我可以以某种方式为我的应用程序将此样式设置为默认样式,而不是依赖用户手动选择它吗?
相当简单,我有一个应用程序应该发送通知,但如果该应用程序位于最前面,它就不会这样做。来自 NSUserNotificationCenter 类引用: The user notification cen
我刚刚注意到 iTunes 的通知图标被专辑封面取代了: 它的应用程序图标是标题附近的一个小图标,与我所知道的有点不同: 我只能添加图像作为内容的一部分,而不能添加应用程序图标。 是否存在我不知道的未
我正在使用此代码: - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Insert code
我目前正在制作一个使用以下代码显示通知的 XIB 菜单栏应用程序: func showNotification(message:String, title:String = "App Name") -
我是 OSX 开发的新手,我正在制作一个应用程序,当发生某些事情时会触发通知。但是当应用程序是关键应用程序时它不会显示通知,因为这是默认行为。即使应用程序是关键应用程序,我也想向他们展示。然而,我只找
在“通知”设置 Pane 中,用户可以指定是否希望单个应用程序将通知显示为警报、横幅或无。我的应用程序中的一些通知可以用作其中之一,但有些只是快速错误消息,不需要用户交互,因此我希望这些通知始终是横幅
我想编写一个仅显示 NSUserNotification 的命令行工具程序。我发现,为了显示 NSUserNotification,我需要创建一个 Cocoa 应用程序,但这不是我想要的。 我想在后台
我正在尝试更新已发送通知(警报)的副标题中的字符串,我使用 NSTimer 执行此操作,如下所示: [NSTimer scheduledTimerWithTimeInterval:5.0
在上图中,您可以在 OS X 上看到两个通知。第一个来 self 的应用程序,第二个来自 Apple 的 Reminders.app。在图像中,您可以看到 otherButtonTitle“完成”和
我想在应用程序显示在最前面时显示用户通知。我找到了下面的代码,但我不确定如何使用委托(delegate):它似乎只返回一个 bool 值。 class MyNotificationDelegate:
有没有办法确定某个 NSUserNotification 是否仍在屏幕上或已被关闭?我还没有找到执行此操作的方法。 最佳答案 我想你可以使用 NSUserNotificationCenterDeleg
我在网上搜索过,但找到的唯一方法是循环 - (void)userNotificationCenter:(NSUserNotificationCenter *)center didDeliverNoti
在 10.9 中,NSUserNotification 支持一个新属性“contentImage”,它允许在通知本身中使用图形。我真的希望有一种方法可以取代 iTunes 通知的通知屏幕,这样发件人/
我正在使用 NSUserNotification 来显示通知。这工作正常。问题是当您点击通知时: 应用通知不会从通知中心删除。 应用(最小化时)打不开。 熟悉 NSUserNotification 的
有人知道从应用程序发送的系统通知标题栏中的标题使用的是哪个值吗? 假设我的应用名为“My.app Name”, header 标题仅显示“My”。 我说的是这个领域: 尝试在build设置中更改产品名
我正在使用这个方法: NSUserNotification *notification = [[NSUserNotification alloc] init]; notific
让我先描述一下场景,然后再描述问题: 我创建了一个使用 NSUserNotification 显示用户通知的函数 -(void)notify:(NSString*) message {
我是一名优秀的程序员,十分优秀!