0

我正在开发一个 NSMenuBar 应用程序,而另一个 NSMenuBar 应用程序似乎影响了我的应用程序的显示行为!?更准确地说:Adobe 的 Creative Cloud 应用程序。当我单击那个(创意云)图标时,会出现弹出视图。之后,当我点击我的状态栏图标时,我的菜单出现了,但是,所有应该启用的 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-views,它们并没有完全重叠我的应用程序的空间。

请参阅这些屏幕截图作为说明:

在此处输入图像描述

恶意创意云

在此处输入图像描述

在此处输入图像描述

我在这里想念什么?应用程序不应该像这样相互影响吗?我正在慢慢地但肯定会为此失去理智。非常感谢任何帮助!谢谢!!

4

1 回答 1

0

我找到了解决我自己问题的方法。所以我希望我能帮助其他在这方面苦苦挣扎的人。

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

前:

在此处输入图像描述

后:

在此处输入图像描述

于 2017-02-09T13:30:46.960 回答