【问题标题】:NSUserNotification stateNSUserNotification 状态
【发布时间】:2012-08-18 11:00:34
【问题描述】:

有没有办法确定某个NSUserNotification 是否仍在屏幕上或已被关闭?我还没有找到办法。

【问题讨论】:

    标签: objective-c nsusernotification


    【解决方案1】:

    我认为你可以使用NSUserNotificationCenterDelegate_Protocol

    它有 userNotificationCenter:didActivateNotification: 当用户点击用户通知中心呈现的用户通知时发送给代理。

    但请记住,这还取决于所使用的通知类型。如果是“横幅”,那么它可能会在用户点击它之前消失。

    因此,与代理一起,您还必须检查通知的类型以及它是否已提交。

    更新: 我没有使用通知中心。所以手头没有代码。但也要看看常量:

    NSUserNotificationActivationType
    These constants describe how the user notification was activated.
    
    enum {
    NSUserNotificationActivationTypeNone = 0,
    NSUserNotificationActivationTypeContentsClicked = 1,
    NSUserNotificationActivationTypeActionButtonClicked = 2
    }
    typedef NSInteger NSUserNotificationActivationType;
    Constants
    NSUserNotificationActivationTypeNone
    The user did not interact with the notification alert.
    Available in OS X v10.8 and later.
    Declared in NSUserNotification.h.
    NSUserNotificationActivationTypeContentsClicked
    The user clicked on the contents of the notification alert.
    Available in OS X v10.8 and later.
    Declared in NSUserNotification.h.
    NSUserNotificationActivationTypeActionButtonClicked
    The user clicked on the action button of the notification alert.
    Available in OS X v10.8 and later.
    Declared in NSUserNotification.h.
    

    【讨论】:

    • 我没用过通知中心。所以手头没有代码。但也要看看常量:
    • 我知道已经构建了一个测试应用程序。我明白你的意思了。使用activationType,您可以判断是否单击了“显示”按钮或内容ID。但关闭按钮没有。似乎是一个奇怪的疏忽!
    • 不知道为什么投反对票?。我觉得我的回答(在我写代码和测试的麻烦之前。)至少是在正确的方向。文档说'userNotificationCenter: didActivateNotification:' "当用户点击用户通知中心提供的用户通知时发送给委托人"。这意味着点击任何地方都会给你一个常数。即单击任一操作按钮,然后解除警报。内容单击它不是。但似乎关闭按钮未包含在通知中。我希望人们能说明他们反对投票的原因。
    • 我怀疑投反对票的原因是,此方法仅允许您确定(并在发生时做出反应)用户是否主动关闭了通知,而不是通知它是否仍在屏幕上。另一方面,我不会说从问题中明确提出的问题是什么。 +1
    猜你喜欢
    • 2016-02-04
    • 2018-05-29
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多