如何在单击 NSStatusItem 时打开一个窗口?

发布于 2024-10-27 19:31:19 字数 154 浏览 8 评论 0原文

我对可可还很陌生,所以请原谅我犯的任何愚蠢的错误。 我有一个 NSStatusItem,我想用它来打开菜单。然而,据我所知并听说过不同的形式,如果没有自定义视图,您只能使用弹出菜单。这是真的吗?如果是这样,您如何制作自定义视图来执行某些操作(例如,在我的情况下打开一个窗口)?感谢您的任何帮助。

I'm pretty new to cocoa, so please excuse me for any stupid mistakes I make.
I have a NSStatusItem, which I want to use to open up a menu. However as far as I know and have heard across different forms, without a custom view you are restricted to just a pop down menu. Is this true? And if so how do you make a custom view to do something (e.g. open a window in my case)? Thanks for any help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一直在等你来 2024-11-03 19:31:19

不,这不是真的。您需要为状态项设置目标和操作,以调用执行您想要的操作的方法(打开窗口)。

// This goes where you set up the status item
NSStatusItem *statusItem; // You need to get this from the status bar
[statusItem setTarget:self];
[statusItem setAction:@selector(openWindow:)];

// This method is called when the status item is clicked
- (void)openWindow:(id)sender {
    NSWindow *window = [self window]; // Get the window to open
    [window makeKeyAndOrderFront:nil];
}

您可能还需要调用 [NSApp activateIgnoringOtherApps:nil]; 到您的 openWindow: 方法,以确保您打开的窗口不在其他应用程序窗口的后面。

No, it is not true. You need to set up the target and action for the status item to call a method which does what you want (opens the window).

// This goes where you set up the status item
NSStatusItem *statusItem; // You need to get this from the status bar
[statusItem setTarget:self];
[statusItem setAction:@selector(openWindow:)];

// This method is called when the status item is clicked
- (void)openWindow:(id)sender {
    NSWindow *window = [self window]; // Get the window to open
    [window makeKeyAndOrderFront:nil];
}

You may also want to call [NSApp activateIgnoringOtherApps:nil]; to your openWindow: method to ensure that the window you open is not behind some other application's window.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文