NSMenuBar应用程序影响(禁用)彼此的视图(NSMenuItem' s)? BUG

时间:2017-01-31 16:09:14

标签: objective-c nsmenu nsmenuitem nsstatusbar creative-cloud

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

一些观察结果:

当我记录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 !!

1 个答案:

答案 0 :(得分:0)

我找到了解决自己问题的方法。所以我希望我会帮助其他人在努力解决这个问题。

我正在使用我的主xib文件菜单(带状态栏)并在单击状态栏图标时引用该菜单。这导致应用程序聚焦并显示相同菜单的两倍(虽然不能同时打开),一个位于状态栏图标下,一个位于苹果符号旁边。每当状态栏菜单以某种方式停用时,左侧菜单仍然有效,就好像焦点转移到那个。 对我来说,解决方案是将我引用的菜单与xib的菜单分离,方法是将其拖到父菜单之外。这很奇怪,因为它在InterfaceBuilder中不再可见,但它仍然存在。见截图:

在:

enter image description here

在:

enter image description here