我在Mac状态栏中有一个NSMenu,在其中我有一堆NSMenuItems和一个自定义视图。在自定义视图中,我有一个NSTextField。我想在Spotlight菜单中打开菜单时将焦点设置在NSTextField上,以便用户可以直接输入。
我尝试了很多方法,包括:
[myTextField becomeFirstResponder];
和
[myTextField selectText: self];
[[myTextField currentEditor] setSelectedRange:NSMakeRange([[myTextField stringValue] length], 0)];
但它们都不起作用。
由于 亚历
答案 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