我在Mac状态栏中有一个NSMenu,在其中有NSMenuItems和自定义 View 的负载。在自定义 View 中,我有一个NSTextField。我想像在Spotlight菜单中一样打开菜单时将焦点设置在NSTextField上,以便用户可以立即键入。
我尝试了很多方法,包括:
[myTextField becomeFirstResponder];
和
[myTextField selectText: self];
[[myTextField currentEditor] setSelectedRange:NSMakeRange([[myTextField stringValue] length], 0)];
但它们都不起作用。
谢谢
亚历克斯
最佳答案
您使用第一个响应器的方向正确,但是-becomeFirstResponder
实际上并不能使您的 View 成为第一响应者–您必须为此调用-[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
关于cocoa - 在NSMenu中将焦点设置在NSTextField上吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4661228/