我在Mac状态栏中有一个NSMenu,在其中我有一堆NSMenuItems和一个自定义视图。在自定义视图中,我有一个NSTextField。我想在Spotlight菜单中打开菜单时将焦点设置在NSTextField上,以便用户可以直接输入。
我尝试了很多方法,包括:
[myTextField becomeFirstResponder];
和
[myTextField selectText: self];
[[myTextField currentEditor] setSelectedRange:NSMakeRange([[myTextField stringValue] length], 0)];
但它们都不起作用。
谢谢Alex
你和第一个人在正确的轨道上,但-becomeFirstResponder
实际上并没有让你的观点成为第一个响应者 - 你必须为此调用-[NSWindow makeFirstResponder:]
。
Google建议NSMenu
s实际上有一个附加窗口。你必须非常小心地使用它,但在它上面调用makeFirstResponder:
是安全的。
有关这方面以及如何利用它的更多信息:https://web.archive.org/web/20171113100008/http://www.cocoabuilder.com/archive/cocoa/195835-set-focus-on-nsview-in-an-nsmenuitem.html