gpt4 book ai didi

macos - NSMenuItem 操作未执行

转载 作者:行者123 更新时间:2023-12-03 16:17:19 26 4
gpt4 key购买 nike

我正在我的应用程序上创建一个状态栏,菜单显示正常,但它似乎无法访问我为其设置的操作。

我通过 C 函数添加状态栏:

void MyFunction(CefRefPtr<CefBrowser> browser) {
MyMenuItem* item = [[MyMenuItem alloc] initWithTitle:@"Item 1" action:@selector(doAction:) keyEquivalent:@"")];
[item setBrowser:browser];

NSMenu *menu = [[NSMenu alloc] initWithTitle:@""];
[menu setAutoenablesItems:NO];
[menu addItem:item];

NSStatusBar *statusBar = [NSStatusBar systemStatusBar];
MSStatusItem *statusItem = [statusBar statusItemWithLength:NSBariableStatusItemLength];
[statusItem retain];
[statusItem setImage:imageObj];
[statusItem setTitle:@"Status"];
[statusItem setHilightMode:YES];
[statusITem setMenu:menu];
}

在 MyFunction() 上方声明操作:

@interfaceMyMenuItem : NSMenuItem {
CefRefPtr<CefBrowser>_browser;
}

@property (nonatomic) CefRefPtr<CefBrowser> browser;
- (void)doAction:(id)sender;
@end

@implementation MyMenuItem
@synthesize browser = _browser;
- (void)doAction:(id)sender {
NSLog(@"Doing action");
}
@end

一切都编译得很好,所以我认为这可能与从 C 函数创建项目有关,但没有正确设置界面。

最佳答案

您是否尝试过设置 menuitem 的目标并实现 validateUserInterfaceItem?

MyMenuItem* item = [[MyMenuItem alloc] initWithTitle:@"Item 1" action:@selector(doAction:) keyEquivalent:@"")];
[item setTarget:self];

-(BOOL)validateUserInterfaceItem:(id<NSValidatedUserInterfaceItem>)anItem
{
return ([anItem selector] == @selector(doAction:));
}

关于macos - NSMenuItem 操作未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23141359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com