Установить фокус на NSTextField в NSMenu? - PullRequest
5 голосов
/ 11 января 2011

У меня есть NSMenu в строке состояния Mac, внутри него у меня есть загрузка NSMenuItems и пользовательский вид.Внутри пользовательского представления у меня есть NSTextField.Я хочу установить фокус на NSTextField при открытии меню, как в меню Spotlight, чтобы пользователь мог сразу печатать.

Я пробовал довольно много методов, включая:

    [myTextField becomeFirstResponder];

и

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

но ни один из них не работает.

Спасибо, Алекс

1 Ответ

3 голосов
/ 11 января 2011

Вы были на правильном пути с первым, но -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

...