【问题标题】:show NSUserNotification additionalActions on click单击时显示 NSUserNotification 附加操作
【发布时间】:2016-02-11 09:40:20
【问题描述】:

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

第二个通知,即来自 Reminders.app 的通知的行为完全不同。它在鼠标悬停时使这个小箭头指向下方,表示单击时有更多动作。实际上,您只需要在“稍后”上单击一次,它就会为您提供更多选择。

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

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

【问题讨论】:

    标签: macos cocoa nsusernotification nsusernotificationcenter


    【解决方案1】:

    在尝试为同一问题寻找解决方案时,我发现 NSUserNotificationPrivate 类的这个很好的解释解释了提醒应用程序是如何做到的。

    https://github.com/indragiek/NSUserNotificationPrivate

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

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

    所以他们使用的是私有 API。正如该网站的免责声明所说,使用其中任何一种都将导致您的应用被 MAS 拒绝,并且如果 API 发生变化,则可能会中断。

    【讨论】:

    • FWIW 我快速测试了这个 [notification setValue:[NSNumber numberWithBool:YES] forKey:@"_alwaysShowAlternateActionMenu"];它就像一个魅力。模块“这是一个私有 API”警告。
    猜你喜欢
    • 2012-07-25
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 2019-02-28
    相关资源
    最近更新 更多