【发布时间】:2013-03-29 10:25:29
【问题描述】:
是否可以检查 NSStatusItem 在系统菜单栏中是否可见?有时不是因为用户有太多的状态项和活动的应用程序菜单栏大小。
我可以像这样通过“hack”检查状态项的位置:
statusRect = [[_statusItem valueForKey:@"window"] frame];
但我不能做同样的事情是可见的:(它总是返回真)
BOOL visible = [[_statusItem valueForKey:@"window"] isVisible];
【问题讨论】:
-
isVisible的文档:“指示窗口是否在屏幕上可见(即使它被其他窗口遮挡)。” (或菜单,尽管这通常不是问题。) -
@PeterHosey - 谢谢,但有什么办法可以解决这个问题(以确定它是否真的可见而不会被遮挡)
-
您是否检查过隐藏项目的框架是否与显示的框架不同?
-[NSWindow isVisible]主要只是表明窗口是否已被订购。您应该检查-screen。如果窗口的框架与屏幕框架重叠,则窗口只有一个屏幕。您是否检查了状态项的视图而不是其窗口?您应该检查视图的window是否为nil以及是否为isHidden。 (您可能需要为状态项分配一个自定义视图以进行检查。)
标签: objective-c macos cocoa nsstatusitem