我有一个NSView,它被设置为view:NSMenuItem出口。该视图包含NSTableView(在NSScrollView内部)和NSSearchField。当用户单击特定的NSMenu时,将显示NSStatusItem。当我从Xcode启动应用程序(“构建并运行”)时,控件表现良好,但是每当我从Finder启动它时(就像用户一样),它们就无法工作,也不会引起任何关注。我的应用程序是LSUIElement。谁能帮我吗?谢谢。

最佳答案

由于您的应用程序是UIElement,因此NSMenu不会成为焦点。您必须将NSTimer设置为0.01秒才能显示NSMenu,并且应该使应用程序处于活动状态:

- (void)statusItemClicked {
    [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(showMenu) userInfo:nil repeats:NO];
    [NSApp activateIgnoringOtherApps:YES];
}
- (void)showMenu {
    [statusItem popUpStatusItemMenu:statusMenu];
}

关于cocoa - NSView(NSMenuItem的导出)中的NSTableView和NSSearchField不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2483435/

10-12 01:33