是否可以检查系统菜单栏中是否显示NSStatusItem?它有时不是由于用户具有太多状态项和活动应用程序菜单栏大小。
我可以通过“hack”检查状态项的位置,如下所示:
statusRect = [[_statusItem valueForKey:@"window"] frame];
但我不能这样做是可见的:(它总是返回true)
BOOL visible = [[_statusItem valueForKey:@"window"] isVisible];
答案 0 :(得分:0)
如果没有非常糟糕的黑客,我不相信它是可行的
在NSStatusItem中有一个视图,并将window.isVisible与视图的visibleRect组合在一起。
无论如何,窗口都不能遮挡状态栏。
=>没用?
在NSStatusItem中有一个视图并尝试Proper way to determine if NSView is drawn中的hack =>没用?
通过辅助功能api模拟鼠标点击并查看您的视图是否获得了该事件:
我尝试了什么
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
item = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
item.title = @"TEST";
view = [[DDQuickMenuStatusItemView alloc] init];
view.item = item;
view.title = item.title;
item.view = view;
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(checkVisible:) userInfo:nil repeats:YES];
}
- (void)checkVisible:(id)timer {
NSLog(@"NOT WORKING vis: %d", (view.window.isVisible && !NSEqualRects(view.visibleRect, NSZeroRect)));
NSLog(@"NOT WORKING isDrawn: %d", (view.isDrawn));
}