我见过很多带有菜单栏项的应用程序或只有菜单栏界面的应用程序。
互联网上有一些教程和资料向您展示了如何做到这一点。但问题是,它们中只有可点击的索引行。
当您单击菜单栏图标/项目时,我希望出现 NSPopover。有谁知道怎么做这个吗?
我不知道是否可以使用标准状态栏项目来完成。使用菜单的自定义视图相对容易。
使用自定义视图创建状态栏项:
item = [[NSStatusBar systemStatusBar] statusItemWithLength:thickness];
view = [[CustomView alloc] initWithFrame:(NSRect){.size={thickness, thickness}}];
[item setView:view];
您的自定义视图需要检测鼠标点击:
- (void)mouseDown:(NSEvent *)event {
...
}
最后,在检测到鼠标点击后的某个时刻,显示/隐藏弹出框。
if (/* menulet is active */) {
[popover showRelativeToRect:/* menulet view frame */
ofView:/* menulet view */
preferredEdge:NSMinYEdge];
} else {
[popover performClose:nil];
}
你需要一些 NSWindow swizzling来让文本字段在弹出框内工作。
我已经用这些想法和一些胶水准备了一个最小的Xcode 项目: PopoverMenulet。