我正在我的可可应用程序中构建一个菜单栏,其中包含以下代码@implementation
我的自定义应用程序CustomApplication
:
+(void) setUpMenuBar
{
[CustomApplication sharedApplication];
// Main menu
NSMenu* mainMenu = [NSApp mainMenu];
if (mainMenu != nil) return; // We set it already
mainMenu = [[[NSMenu alloc] initWithTitle:@""] autorelease];
[NSApp setMainMenu:mainMenu];
// Application menu
NSMenuItem* appleItem = [mainMenu addItemWithTitle:@""
action:nil
keyEquivalent:@""];
NSString* appName = @"MyApp";
NSMenu* appleMenu = [[NSMenu alloc] initWithTitle:@""];
// Apple menu
[appleMenu addItemWithTitle:[@"About " stringByAppendingString:appName]
action:@selector(orderFrontStandardAboutPanel:)
keyEquivalent:@""];
// Quit
[appleMenu addItemWithTitle:[@"Quit " stringByAppendingString:appName]
action:@selector(terminate:)
keyEquivalent:@"q"];
[appleItem setSubmenu:[appleMenu autorelease]];
}
启动时,我的应用程序获得焦点,但菜单栏不可点击。
但是,如果我单击窗口并再次单击窗口(将焦点返回到应用程序),它将变得可单击并正常工作。
我错过了什么?
UPDATE
当我创建应用程序时会调用此方法,如下所示。[UPDATE]这就是我开始申请的内容。它实际上是从任何外部的 ocaml 绑定中调用的第一件事@implementation
一个类的。
CustomApplicationDelegate* delegate = [CustomApplicationDelegate new];
[CustomApplication sharedApplication];
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
[NSApp activateIgnoringOtherApps:YES];
[[NSApplication sharedApplication] setDelegate:delegate];
[CustomApplication setUpMenuBar];
[[CustomApplication sharedApplication] finishLaunching];
好的,感谢@bhaller 的评论,我能够解决我的问题。
实际上,我将电话转接到代表,如下所示。
-(void)applicationWillFinishLaunching:(NSNotification *)aNotification
{
[CustomApplication sharedApplication];
[CustomApplication setUpMenuBar];
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
}
-(void)applicationDidFinishLaunching:(NSNotification *)notification
{
[CustomApplication sharedApplication];
[NSApp activateIgnoringOtherApps:YES];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)