【问题标题】:NSTextField from NSStatusitem来自 NSStatusitem 的 NSTextField
【发布时间】:2012-08-26 00:45:02
【问题描述】:

当用户点击状态栏中的 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];
}

有没有办法让它工作?

【问题讨论】:

    标签: objective-c macos cocoa nsstatusitem


    【解决方案1】:

    这非常接近正确。您的 statusItem 属性应该保留,而不是 IBOutlet,因为您是在代码中创建它。此外,您的状态项不能同时拥有菜单和操作——如果您有菜单,当您单击状态项时它将打开它,而不是触发您的操作方法。因此,如果您进行了这些更改,并且在 IB 中设置了弹出框,这应该可以工作。

    【讨论】:

    • 谢谢我让它工作了,唯一的问题是当我点击离开或再次点击状态项时它并没有消失,有没有办法解决这个问题?
    • 是的,在 IB 中将弹出框的 Behavior 属性设置为瞬态。
    • 谢谢,我注意到的另一个错误是我无法让 NSTextfield 聚焦
    猜你喜欢
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多