我目前在NSStatusItem
中初始化的状态栏有awakeFromNib
,如下所示:
statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setMenu:statusMenu];
[statusItem setImage:statusImage];
[statusItem setAlternateImage:statusHighlightedImage];
[statusItem setHighlightMode:YES];
[statusItem setTarget:self];
点击图标后会打开NSMenu
。点击后,其中一个选项应该从状态栏图标打开NSPopover
。为此,我有这个代码,它通过Interface Builder连接到菜单项:
- (IBAction)prefs:(id)sender {
NSRectEdge prefEdge = NSMaxYEdge;
[[self pop] showRelativeToRect:[[statusItem view] bounds]
ofView:[statusItem view]
preferredEdge:prefEdge];
}
但是,当我单击应该打开Popover的菜单项时,没有任何反应。有什么特别的原因可能出现这种情况吗?据我所知,应该可以做到。
提前致谢。我尽可能地查看了Stack Overflow,但是如果有一个真正重复的问题,请链接到我。
仅供参考:statusItem
变量是NSStatusItem
。
答案 0 :(得分:2)
您需要使用[statusItem setView:]
为[statusItem view]
设置视图,以便返回非nil
。
如果您不介意使用私有API,可以尝试调用[statusItem _button]
,但如果您计划提交到App Store,则不允许这样做。
答案 1 :(得分:0)
我不知道这个问题是否已经解决,但我有一些笔记。
prefs:
IBAction
。[(NSMenuItem *)sender view]
作为锚点及其边界。