目前,当我使用警报样式创建NSUserNotification时,除非我手动关闭它,否则它将不会隐藏.
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)
解决方法
使用NSObject来实现这一点非常简单
performSelector:withObject:afterDelay:方法.
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))