2017-01-31 4 views
0

Je travaille sur une application NSMenuBar et une autre application NSMenuBar semble influencer le comportement d'affichage de mon application !? Plus précisément: Adobe Creative Cloud Application. Lorsque je clique sur cette icône (nuage créatif), la fenêtre contextuelle apparaît. Ensuite, quand je clique sur mon icône StatusBar, mon menu apparaît, MAIS, tous les NSMenuItem qui devraient être activés sont soudainement désactivés, et non plus interactifs.Applications NSMenuBar influençant (désactivant) les vues des autres (NSMenuItem)? BUG

Quelques observations:

Lorsque je me connecte le état activé du NSMenuItem, il enregistre correctement comme étant activé, mais il est clairement ne diffusons pas d'comme activé (voir capture d'écran), et en cliquant dessus ferme simplement le menu sans effectuer l'action associée. Je fais l'enregistrement avec le code suivant:

-(void)menuWillOpen:(NSMenu *)menu 
     { 
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), 
      dispatch_get_main_queue(), 
      ^{ 
       NSLog(@"preferences menu-item is enabled: %hhd",[self.preferenceMenuItem isEnabled]); 
      }); 
    } 

Le NSMenu J'utilise est réglé sur setAutoenablesItems: NO.

Adobe Creative Cloud utilise également une vue contextuelle. Et quand il est ouvert, il plane clairement sur l'écran-immobilier que mon NSMenu utilise. Lorsque j'essaie de reproduire cela avec d'autres applications NSMenuBar (par exemple, le Wifi ou le Bluetooth d'Apple), tout fonctionne. Aucun problème. Là encore, ces applications n'utilisent pas les vues Popover, et elles ne chevauchent pas complètement l'espace de mon application.

S'il vous plaît voir ces captures d'écran à titre d'illustration:

Avant

enter image description here

Malicious Creative Cloud

enter image description here

Après

enter image description here

Que manque-t-il ici? Les applications ne devraient pas s'influencer les unes les autres comme ce droit? Je perds lentement mais sûrement mon esprit à ce sujet. Toute aide BEAUCOUP appréciée! Thnx !!

Répondre

0

J'ai trouvé la solution à mon propre problème. Donc j'espère que j'aiderai n'importe qui d'autre luttant avec ceci. J'utilisais mon menu principal du fichier xib (avec la barre d'état) et je me référais à ce menu pour l'ouvrir lorsque je cliquais sur l'icône de la barre d'état. Cela a provoqué la mise au point de l'application et l'affichage de deux fois le même menu (mais pas ouvert en même temps), un sous l'icône de barre d'état comme prévu, et un sur le côté gauche à côté du symbole de la pomme. Chaque fois que le menu de la barre d'état était en quelque sorte désactivé, le menu de gauche fonctionnait toujours, comme si le focus était déplacé vers celui-là. Pour moi, la solution était de découpler mon menu référencé du menu xib, en le faisant glisser en dehors du menu parent. C'est bizarre parce que d'une manière ou d'une autre il n'est plus visible dans InterfaceBuilder, mais il est toujours là. Voir les screenshots:

AVANT:

enter image description here

APRÈS:

enter image description here