2017-01-31 35 views
0

我正在研究一个NSMenuBar应用程序,另一个NSMenuBar应用程序似乎影响我的应用程序的显示行为!?更确切地说:Adobe的创意云应用程序。当我点击那个(创意云)图标时,弹出视图出现。之后,当我点击我的StatusBar图标时,出现我的菜单,但是,应该启用的所有NSMenuItem都会突然禁用,并且不再交互。NSMenuBar影响(禁用)其他视图(NSMenuItem)的应用程序? BUG

一些观察:

当我登录了NSMenuItem的启用状态,它正确地记录为被启用,但它显然不是显示为已启用(见截图),并点击它只是关闭菜单而不执行相关的操作。我使用以下代码进行日志记录:

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

我使用的NSMenu设置为setAutoenablesItems:NO。

此外,Adobe的Creative Cloud使用弹出式视图。当它被打开时,它显然悬停在我的NSMenu正在使用的屏幕上。

当我试图用其他NSMenuBar应用程序(例如Apple的Wifi或蓝牙)重现这一切时,它都可以正常工作。没问题。然后再次,这些应用程序不使用Popover视图,并且它们不会完全重叠我的应用程序的空间。

请看看这些截图为例证:

之前

enter image description here

恶意创意云

enter image description here

enter image description here

我在这里错过了什么?应用程序不应该像这样影响对方?我很慢,但肯定会对此失去理智。任何帮助表示赞赏!日Thnx!

回答

0

我发现了解决我自己的问题。所以我希望我会帮助其他人为此付出努力。

我正在使用我的主要xib文件菜单(带状态栏),并且在单击状态栏图标时引用该菜单打开。这导致应用程序获得焦点并显示两次相同的菜单(尽管未同时打开),一个在状态栏图标下按预期方式显示,另一个在Apple符号旁边的左侧显示。每当状态栏菜单以某种方式被取消激活时,左侧菜单仍在工作,就好像焦点转移到了那个。 对我来说,解决方法是将我的引用菜单从xib的菜单中解耦出来,方法是将它拖到父菜单之外。这很奇怪,因为它在InterfaceBuilder中不再可见,但它肯定仍然存在。查看截图:

BEFORE:

enter image description here

AFTER:

enter image description here

相关问题