+(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
当我按如下方式创建应用程序时调用此方法.
[更新]这是我正在开始我的应用程序.它实际上是从类的任何@implementation之外的ocaml绑定中调用的第一件事.
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];}总结
以上是内存溢出为你收集整理的objective-c – Cocoa应用程序菜单栏无法点击全部内容,希望文章能够帮你解决objective-c – Cocoa应用程序菜单栏无法点击所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)