【问题标题】:Set focus on a NSTextField in an NSMenu?将焦点放在 NSMenu 中的 NSTextField 上?
【发布时间】:2011-01-11 18:30:37
【问题描述】:

我在 Mac 状态栏中有一个 NSMenu,在里面我有一个 NSMenuItems 的负载和一个自定义视图。在自定义视图中,我有一个 NSTextField。当菜单像在 Spotlight 菜单中一样打开时,我想将焦点设置在 NSTextField 上,以便用户可以立即键入。

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

    [myTextField becomeFirstResponder];

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

但它们都不起作用。

谢谢 亚历克斯

【问题讨论】:

    标签: cocoa macos focus nstextfield nsmenu


    【解决方案1】:

    您在第一个方面走在了正确的轨道上,但 -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

    【讨论】:

    • 感谢您的帮助。您的解决方案有部分帮助,当菜单打开时,即使我调用“[[myTextView 窗口] makeFirstResponder:myTextField]”,它仍然无法工作,但是当我在 myTextView 内单击时,它会使 myTextField 成为焦点.
    • @Supertecnoboff 已切换到 archive.org 链接,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多