我正在开发一个 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,它们并没有完全重叠我的应用程序的空间。
请参阅这些屏幕截图作为说明:
前
恶意创意云
后
我在这里想念什么?应用程序不应该像这样相互影响吗?我正在慢慢地但肯定会为此失去理智。非常感谢任何帮助!谢谢!!