将重点放在NSMenu中的NSTextField上?

时间:2011-01-11 18:30:37

标签: cocoa macos focus nstextfield nsmenu

我在Mac状态栏中有一个NSMenu,在其中我有一堆NSMenuItems和一个自定义视图。在自定义视图中,我有一个NSTextField。我想在Spotlight菜单中打开菜单时将焦点设置在NSTextField上,以便用户可以直接输入。

我尝试了很多方法,包括:

    [myTextField becomeFirstResponder];

    [myTextField selectText: self];
    [[myTextField currentEditor] setSelectedRange:NSMakeRange([[myTextField stringValue] length], 0)];

但它们都不起作用。

由于 亚历

1 个答案:

答案 0 :(得分:3)

您使用第一个问题进入了正确的轨道,但-becomeFirstResponder实际上并未将您的观看视为第一个响应者 - 您必须为此调用-[NSWindow makeFirstResponder:]

Google建议NSMenu实际上有一个附加窗口。您必须非常小心地使用它,但可以安全地在其上调用makeFirstResponder:

有关此内容的更多信息以及如何在此处利用它:https://web.archive.org/web/20171113100008/http://www.cocoabuilder.com/archive/cocoa/195835-set-focus-on-nsview-in-an-nsmenuitem.html