objective-c - NSStatusitem 中的 NSTextField

标签 objective-c macos cocoa nsstatusitem

有什么方法可以让用户点击状态栏中的 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];
}

有办法让它发挥作用吗?

最佳答案

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

关于objective-c - NSStatusitem 中的 NSTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12126836/

相关文章:

objective-c - NSTableView 的自定义 NSView 不更新组件

ios - Xcode 找不到我在项目中制作的 .h 文件

java - 将 java 库导入到 OS X 的 swift 项目

cocoa - 使用 NSProxy 和forwardInitation :

ios - Cocoa 使用什么样的排序?

ios - 在 iOS 上以编程方式安装根 CA 证书

ios - 是否需要使用无用的 object.self.self.. 或 Class.self.self.. ?

iphone - 为什么不需要在 NSURLConnectionDelegate 协议(protocol)中声明 NSURLConnection 委托(delegate)方法

OSX 上的 Git 将符号链接(symbolic link)克隆为纯文本文件

objective-c - 创建文件模板?