将重点放在NSMenu中的NSTextField上?

问题描述 投票:5回答:1

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

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

    [myTextField becomeFirstResponder];

    [myTextField selectText: self];
    [[myTextField currentEditor] setSelectedRange:NSMakeRange([[myTextField stringValue] length], 0)];

但它们都不起作用。

谢谢Alex

cocoa macos focus nstextfield nsmenu
1个回答
3
投票

你和第一个人在正确的轨道上,但-becomeFirstResponder实际上并没有让你的观点成为第一个响应者 - 你必须为此调用-[NSWindow makeFirstResponder:]

Google建议NSMenus实际上有一个附加窗口。你必须非常小心地使用它,但在它上面调用makeFirstResponder:是安全的。

有关这方面以及如何利用它的更多信息:https://web.archive.org/web/20171113100008/http://www.cocoabuilder.com/archive/cocoa/195835-set-focus-on-nsview-in-an-nsmenuitem.html

© www.soinside.com 2019 - 2024. All rights reserved.