objective-c - 最小的 Cocoa 应用程序 - 菜单问题
问题描述
我需要在没有 Xcode 的情况下实现最小的 Cocoa 应用程序。我正在尝试这个例子:
https://www.cocoawithlove.com/2010/09/minimalist-cocoa-programming.html
#import <Cocoa/Cocoa.h>
int main()
{
[NSAutoreleasePool new];
[NSApplication sharedApplication];
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
id menubar = [[NSMenu new] autorelease];
id appMenuItem = [[NSMenuItem new] autorelease];
[menubar addItem:appMenuItem];
[NSApp setMainMenu:menubar];
id appMenu = [[NSMenu new] autorelease];
id appName = [[NSProcessInfo processInfo] processName];
id quitTitle = [@"Quit " stringByAppendingString:appName];
id quitMenuItem = [[[NSMenuItem alloc] initWithTitle:quitTitle
action:@selector(terminate:) keyEquivalent:@"q"] autorelease];
[appMenu addItem:quitMenuItem];
[appMenuItem setSubmenu:appMenu];
id window = [[[NSWindow alloc] initWithContentRect:NSMakeRect(10, 10, 200, 200)
styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO]
autorelease];
[window setTitle:appName];
[window makeKeyAndOrderFront:nil];
[NSApp activateIgnoringOtherApps:YES];
[NSApp run];
return 0;
}
它运行良好,除了一个小问题:启动后,菜单立即更改,但处于非活动状态(单击它什么也不做)。如果我选择其他一些应用程序,然后返回到那个最小的应用程序,菜单就会按预期开始工作。
知道如何解决这个问题吗?
解决方案
对于最小的应用程序,我有同样的问题。他们没有正确处理事件。
在这一点上 (10.15.2 (19C57)) 这些是它正常工作所需要的。
.app
带有扩展名的应用程序包文件夹。(也许是可选的)Contents/Info.plist
具有CFBundleIdentifier
价值。(不需要其他密钥)Contents/MacOS/(your-executable)
文件。
推荐阅读
- javascript - 将异步值存储在局部变量中并将其显示在模板中的角度方式
- php - preg_replace 正负和 0
- sql - Entity Framework Core:使用没有外键的导航属性
- mysql - 数据类型 blob mysql
- jenkins - 我应该如何在 Jenkins 中使用我不想在构建本身中使用的 NPM 模块?
- html - 有没有办法在不导入的情况下显示图像?
- mapbox - 使用 Mapbox 中低 dpi 栅格图块的下一个缩放级别以获得高分辨率栅格图块
- ruby - Ruby 线程安全线程创建
- vb.net - 变量未在 vb.net 中更新
- angular - 如何使用现有数据库预填充下拉菜单