40 votes

NSUserNotification ne montrant pas le bouton d'action

J'utilise ce code:

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

Et j'obtiens, sans faute,

entrez la description de l'image ici

Pas de bouton d'action ou autre bouton.

50voto

kurthardin.dev Points 406

Comme déjà dit dans une réponse précédente, le type de notification doit être mis à l'alerte pour le bouton d'action pour être montré. Si vous souhaitez définir la valeur par défaut de notification de style de votre application d'alerte, vous devez définir la clé NSUserNotificationAlertStyle en info.plist avec la valeur d'alerte.

Voir Apple info.plist clés de référence pour plus de détails:

NSUserNotificationAlertStyle Spécifie si la notification de style devrait être bannières, des alertes, ou aucun. La valeur par défaut est de bannières, qui est le style recommandé.

27voto

pcperini Points 11448

Et voici la réponse.

Merci encore à #macdev sur freenode.

entrez la description de l'image ici

La sélection doit être "Alertes" pour avoir des boutons.

18voto

PARTISAN Points 31

Comme un contre-exemple pour les autres réponses, nous pouvons utiliser iTunes - il toujours à l'affiche bouton "Skip" même quand nous la configuration de l'alerte de style de bannières. J'ai donc continué à chercher et a trouvé ce dépôt githubIndragie Karunaratne apporter des éléments utiles des propriétés supplémentaires dans NSUserNotification privé des en-têtes. Vous pouvez vérifier la liste complète des propriétés dans la NSUserNotification_Private.h fichier, mais réelle pour montrer les boutons dans la bannière de notification de style est

@property BOOL _showsButtons; // @dynamic _showsButtons;

donc, il vous suffit d'ajouter cette ligne de code

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

et votre avis sur le bouton d'action deviendra indépendant en alerte de style.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X