Как заставить NSPopUpButton принимать статус firstResponder?

У меня есть NSPopUpButton и даже простой подкласс NSPopUpButton. В подклассе у меня есть:

- (BOOL)acceptsFirstResponder { return YES; }

- (BOOL)refusesFirstResponder { return NO; }

Теперь достаточно просто сказать окну, чтобы кнопка стала первым ответчиком, и это работает при запуске, но мне нужно, чтобы это также происходило как nextResponder при переходе табуляции из NSTextField. Когда фокус находится на любом NSTextField, кажется, что он никогда не сможет вернуться к всплывающей кнопке.

Что мне здесь не хватает? Кажется, это должно быть очень просто.

ОТВЕТ: firstResponder здесь не подходит. Требуется подкласс (как я и подозревал), и ему просто нужно переопределить следующее, чтобы вернуть YES: - (BOOL)canBecomeKeyView { return YES; } (спасибо Peter Hosey)


person uchuugaka    schedule 21.03.2013    source источник
comment
Можете ли вы дать нам список элементов управления в окне и что установлено для nextResponder на каждом из них?   -  person Aaron Golden    schedule 21.03.2013
comment
Вы пытались установить nextKeyView предыдущего представления?   -  person Peter Hosey    schedule 22.03.2013
comment
Содержит только NSPopUpButton и NSTextField. Пробовал устанавливать nextKeyView как в коде, так и в ИБ с одного на другой, безрезультатно. Похоже, что только содержащее окно может установить NSPopUpButton как firstResponder. Странный.   -  person uchuugaka    schedule 22.03.2013
comment
@uchuugaka: обратите внимание, что существует различие между первым ответившим и основным представлением. Существует отдельный метод canBecomeKeyView.   -  person Peter Hosey    schedule 22.03.2013
comment
Ага!! canBecomeKeyView {return YES;} в моем подклассе сделал свое дело. Пожалуйста, добавьте в качестве ответа, и я приму это! firstResponder не был тем методом, который я искал.   -  person uchuugaka    schedule 22.03.2013
comment
Что произойдет, если вы не переопределите этот метод, но включите полный доступ с клавиатуры в Системных настройках?   -  person Peter Hosey    schedule 22.03.2013
comment
Тогда все мыслимые вещи в ОС доступны с клавиатуры. Не то, что мне нужно. Это для формы, которая будет очень часто использоваться в рабочем процессе, но все в пользовательском интерфейсе не обязательно требует полного доступа с клавиатуры по умолчанию.   -  person uchuugaka    schedule 22.03.2013
comment
Вам все еще нужно опубликовать ответ как ответ... ;)   -  person uchuugaka    schedule 22.03.2013
comment
Ну, он будет, если он прочитает пост. @PeterHosey, пожалуйста, добавьте свой ответ ниже в качестве ответа, чтобы я мог правильно принять его ...   -  person uchuugaka    schedule 22.03.2013
comment
@Monolo: я действительно получаю уведомление о следующем комментарии после моего собственного. Не уверен, относится ли это только к вопрошающему или к кому-либо еще.   -  person Peter Hosey    schedule 23.03.2013
comment
Я думаю, это все.   -  person uchuugaka    schedule 23.03.2013


Ответы (1)


В вашем подклассе NSPopUpButton попробуйте вместо этого переопределить canBecomeKeyView.

person Peter Hosey    schedule 22.03.2013