将重点放在NSMenu中的NSTextField上?

Ale*_*key 5 macos cocoa focus nsmenu nstextfield

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

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

    [myTextField becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)

    [myTextField selectText: self];
    [[myTextField currentEditor] setSelectedRange:NSMakeRange([[myTextField stringValue] length], 0)];
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用.

谢谢Alex

Bre*_*don 3

您的第一个视图处于正确的轨道上,但-becomeFirstResponder实际上并没有使您的视图成为第一个响应者 - 您必须呼吁-[NSWindow makeFirstResponder:]这一点。

谷歌表明它NSMenu实际上有一个附加的窗口。您必须非常小心地使用它,但调用它是安全的makeFirstResponder:

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