我在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/

10-09 16:12