目前,当我使用警报样式创建NSUserNotification时,除非我手动关闭它,否则它不会隐藏。
有没有办法可以在2秒后自动关闭/隐藏它?
NSUserNotification代码仅供参考:
let notification:NSUserNotification = NSUserNotification()
notification.title = "Title"
notification.subtitle = "Subtitle"
notification.informativeText = "Informative text"
notification.soundName = NSUserNotificationDefaultSoundName
notification.deliveryDate = NSDate(timeIntervalSinceNow: 10)
notification.hasActionButton = false
let notificationcenter:NSUserNotificationCenter = NSUserNotificationCenter.defaultUserNotificationCenter()
notificationcenter.scheduleNotification(notification)
答案 0 :(得分:5)
使用NSObject来实现这一点非常简单
performSelector:withObject:afterDelay:
方法。
由于您在特定时间间隔后安排通知传送,因此您需要在解除之前将额外延迟添加到传送前的初始延迟。在这里,我已经将它们作为交付前10秒的常数写入,并在解雇前2秒写出:
let delayBeforeDelivering: NSTimeInterval = 10
let delayBeforeDismissing: NSTimeInterval = 2
let notification = NSUserNotification()
notification.title = "Title"
notification.deliveryDate = NSDate(timeIntervalSinceNow: delayBeforeDelivering)
let notificationcenter = NSUserNotificationCenter.defaultUserNotificationCenter()
notificationcenter.scheduleNotification(notification)
notificationcenter.performSelector("removeDeliveredNotification:",
withObject: notification,
afterDelay: (delayBeforeDelivering + delayBeforeDismissing))
答案 1 :(得分:1)
您可以使用removeDeliveredNotification
:或removeAllDeliveredNotifications
与计时器
// Clear a delivered notification from the notification center. If the notification is not in the delivered list, nothing happens.
- (void)removeDeliveredNotification:(NSUserNotification *)notification;
// Clear all delivered notifications for this application from the notification center.
- (void)removeAllDeliveredNotifications;
OS X(10.8及更高版本)
答案 2 :(得分:0)
Blockquote有没有办法可以在2秒后自动关闭/隐藏它?
不,您在OSX 10.11之前没有任何此类选项,可能将来Apple可能提供。
用户可以通过三种方式自定义NSUserNotification
,也称为低吼通知:
您作为开发人员无法控制系统设置。这取决于用户启用或禁用并选择他喜欢的通知类型。
如果您希望向用户显示任何提醒,您可以创建自己的提醒窗口并在该角落显示。您可以将计时器设置为关闭,或者提供操作按钮以在需要时关闭它。
更新1:
Cocoa提供NSWindow
& NSPanel
(HUD和普通小组)。您可以根据需要自定义窗口或面板。检查有多种选项可以帮助您根据您的要求进行表单。
如果你不能得到,说你想要一个圆角,那么你需要自定义窗口/视图等。