NSUserNotification不显示操作button

我正在使用这个代码:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Insert code here to initialize your application NSUserNotification *notification = [[NSUserNotification alloc] init]; [notification setTitle: @"Title"]; [notification setSubtitle: @"Subtitle"]; [notification setInformativeText: @"Informative Text"]; [notification setHasActionButton: YES]; [notification setActionButtonTitle: @"Action Button"]; [notification setOtherButtonTitle: @"Other Button"]; [notification setSoundName: NSUserNotificationDefaultSoundName]; [notification setDeliveryDate: [NSDate dateWithTimeIntervalSinceNow: 10]]; [[NSUserNotificationCenter defaultUserNotificationCenter] scheduleNotification: notification]; } 

而且我越来越多,

在这里输入图像说明

没有操作button或其他button。

如前面的回答中所述,需要将通知types设置为警示要显示的操作button。 如果要设置应用程序的默认通知样式以提醒,则需要使用值alert来定义info.plist中的NSUserNotificationAlertStyle关键字。

有关更多详细信息,请参阅Apple的info.plist键参考 :

NSUserNotificationAlertStyle指定通知样式是横幅警报还是 。 默认值是横幅,这是推荐的风格。

这就是答案。

再次感谢freenode上的#macdev。

在这里输入图像说明

select需要是“警报”才能有button。

作为其他答案的反例,我们可以使用iTunes – 它仍然显示“跳过”button,即使我们设置提醒样式的横幅。 所以我继续search,发现这个github回购 Indragie Karunaratne在NSUserNotification私人头文件中提供一些有用的附加属性。 您可以检查NSUserNotification_Private.h文件中的属性的完整列表,但实际用于显示标题通知样式中的button是

 @property BOOL _showsButtons; // @dynamic _showsButtons; 

所以你可以添加这行代码

 [notification setValue:@YES forKey:@"_showsButtons"]; 

并且您的通知操作button将在警报风格上变得独立。

基于PARTISAN回复的魔法指令是:

 notification.set_showsButtons_(True) 

茶清:)