NSView中的NSTableView和NSSearchField是NSMenuItem的出口,不起作用

时间:2010-03-20 14:45:48

标签: cocoa focus nstableview nsview nsmenuitem

我有一个NSView,它被设置为view:的{​​{1}}出口。该视图包含NSMenuItem(在NSTableView内)和NSScrollView。当用户点击特定NSSearchField时会显示NSMenu。当我从Xcode(构建和运行)启动应用程序时,控件表现良好,但每当我从Finder启动它时(就像用户一样),它们都不起作用而且不需要任何关注。我的申请是NSStatusItem。谁能帮我吗?感谢。

1 个答案:

答案 0 :(得分:3)

由于您的申请是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];
}