当用户点击状态栏中的NSStatusitem时,有没有办法让NSPopover出现?
到目前为止,在我的标题中,我有这个:IBOutlet NSStatusItem *statusitem;
和此:
@property (assign) IBOutlet NSPopover *pop;
根据这种方法,我有这个:
[[NSImage imageNamed:@"mic.png"]setSize:NSMakeSize(20,20)];
statusitem = [[NSStatusBar systemStatusBar]statusItemWithLength:NSVariableStatusItemLength];
[statusitem setHighlightMode:YES];
[statusitem setImage:[NSImage imageNamed:@"mic.png"]];
[statusitem setMenu:menu];
[statusitem setAction:@selector(pop:)]
和
- (void)pop:(id)sender{
[[self pop]showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxXEdge];
}
无论如何要让它发挥作用吗?
答案 0 :(得分:1)
这非常接近正确。您的statusItem属性应该保留,而不是IBOutlet,因为您是在代码中创建它。此外,您不能同时拥有状态项的菜单和操作 - 如果您有菜单,则在您单击状态项时将打开该菜单,而不是触发您的操作方法。因此,如果您进行了这些更改,并且您在IB中设置了弹出框,则应该可以使用。