cocoa osx-mountain-lion nsusernotification

cocoa - NSUserNotification no muestra el botón de acción



osx-mountain-lion (4)

Como una instancia contraria para otras respuestas, podemos usar iTunes, todavía muestra el botón "Omitir" incluso cuando configuramos el estilo de alerta para los banners. Así que continué buscando y encontré este repositorio github donde Indragie Karunaratne proporciona algunas propiedades adicionales útiles en encabezados privados NSUserNotification. Puede consultar la lista completa de las propiedades en el archivo NSUserNotification_Private.h , pero real para mostrar los botones en el estilo de notificación de banner es

@property BOOL _showsButtons; // @dynamic _showsButtons;

entonces puedes agregar esta línea a tu código

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

y su botón de acción de notificación se volverá independiente en el estilo de alerta.

Estoy usando este código:

- (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]; }

Y me estoy poniendo, sin falta,

Sin botón de acción u otro botón.


Como ya se indicó en una respuesta anterior, el tipo de notificación debe establecerse para alertar que se muestre el botón de acción. Si desea configurar el estilo de notificación predeterminado de su aplicación para alertar, debe definir la clave NSUserNotificationAlertStyle en info.plist con la alerta de valor.

Consulte la referencia de claves info.plist de Apple para obtener más detalles:

NSUserNotificationAlertStyle Especifica si el estilo de notificación debe ser banners , alertas o ninguno . El valor predeterminado es pancartas, que es el estilo recomendado.


El comando mágico basado en la respuesta de PARTISAN es:

notification.set_showsButtons_(True)

cha-ching :)


Y aquí estaba la respuesta.

Gracias de nuevo a #macdev en freenode.

La selección debe ser "Alertas" para tener botones.