macos - 单击时显示 NSUserNotification 附加操作

标签 macos cocoa nsusernotification nsusernotificationcenter

additionalActions

在上图中,您可以在 OS X 上看到两个通知。第一个来 self 的应用程序,第二个来自 Apple 的 Reminders.app。在图像中,您可以看到 otherButtonTitle“完成”和 actionButtonTitle“稍后”。

第二个通知,即来自 Reminders.app 的通知,其行为完全不同。当鼠标悬停时,它会出现一个向下的小箭头,表明单击时有更多操作。事实上,您只需点击“稍后”一次,它就会为您提供更多选项可供选择。

但是,我无法让相同的行为适用于我的通知。我没有在鼠标悬停时看到小箭头,也没有通过单击“稍后”显示更多选项(通知只是被忽略)。仅当在“稍后”上按住鼠标按钮时才会显示更多选项,这并不明显。

我在这里遗漏了一些明显的东西吗?如何使我的通知与 Reminders.app 中的通知完全相同?

最佳答案

在尝试寻找同一问题的解决方案时,我发现了 NSUserNotificationPrivate 类的一个很好的解释,它解释了提醒应用程序如何执行此操作。

https://github.com/indragiek/NSUserNotificationPrivate

如果通知类型设置为“Alert”,alternateActionButtonTitles 属性允许您设置要在操作菜单中显示的附加菜单项标题数组,可以通过将鼠标悬停在“操作”按钮上并单击箭头来访问该菜单。

处理通知后,可以使用 _alternateActionIndex 属性检索操作的索引。

所以他们使用的是私有(private) API。正如该网站的免责声明所述,使用任何此类内容都将导致您的应用被 MAS 拒绝,并且如果 API 发生更改,则可能会导致应用程序崩溃。

关于macos - 单击时显示 NSUserNotification 附加操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631218/

相关文章:

swift - 创建 NSStackView 的子类

cocoa - 获取应用程序。通知横幅上的图标

objective-c - Mac OS X NSUserNotificationCenter 通知获取取消事件/回调

objective-c - 使用 NSUserNotification 激活 NSWindow

sql-server - 在 Mac 上使用 iODBC 连接到 MS SQL Server

objective-c - 如何设置授权服务在 OS X 上显示的消息?

python - Django 1.5b1 : executing django-admin. py导致 "No module named settings"错误

objective-c - 如何使用 NSViewController 识别 modalForm 窗口

c++ - 如何在MacOS上使用Boost C++库

macos - 将屏幕的一部分镜像到外部显示器(在 OSX 中)