简体   繁体   中英

Detect Other Button click (NSUserNotification)

I've searched all over the internet but the only method found was by looping through

- (void)userNotificationCenter:(NSUserNotificationCenter *)center didDeliverNotification:(NSUserNotification *)notification

just as shown in: https://stackoverflow.com/a/21365269/1795083

However, my app sometimes displays multiple notifications at a short interval, so this isn't really efficient nor effective. How does the mail app handle it when the trash button is pressed. There has to be at least a private method that's called. Has anyone ever came across it? Thanks in advance

After... uhm.... "checking" out the mail app's code... I found a suspicious function in their notification controller class...

- (void)userNotificationCenter:(NSUserNotificationCenter *)center didDismissAlert:(NSUserNotification *)alert

I have no idea why apple don't want to add this function to the NSUserNotificationDelegate... but I tested this out in my app and it works!!!

Swift >= 4 version:

@objc
func userNotificationCenter(_ center: NSUserNotificationCenter, didDismissAlert notification: NSUserNotification)

Make sure you add the @objc annotation, otherwise the objective-C runtime won't be able to see your delegate method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM