我正在构建一个 Mac 应用程序,它只位于菜单栏中,没有停靠项,没有键窗口,也没有主菜单(它LSUIElement在 info.plist 中设置为YES)。正如我所料,当我第一次启动该应用程序时,applicationDidBecomeActive:它会被调用。但是,一旦另一个应用程序获得焦点,applicationDidBecomeActive:就再也不会被调用。
这可以防止我的应用程序中的文本字段成为第一响应者。当我第一次打开应用程序时,文本字段是可编辑的:

但是在另一个应用程序进入前台后,文本字段不可编辑:

我试过的:
打开菜单时,在的委托menuWillOpen:上调用。NSMenu我尝试放置以下内容但没有成功:
[NSApp unhide];
[NSApp arrangeInFront:self];
[NSApp activateIgnoringOtherApps:YES];
[NSApp requestUserAttention:NSCriticalRequest];
[[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps];
[[NSRunningApplication currentApplication] unhide];
我认为这个问题可能与没有任何窗户可以放在前面有关。我觉得我在这里抓住了稻草。任何帮助将不胜感激。