Редактируемый NSTextField в пользовательском представлении NSMenuItem

У меня есть подкласс NSView, который я хотел бы содержать редактируемый NSTextField, похожий на Spotlight.

У меня есть значительные трудности с получением текстового поля для выбора и выделения. Если я быстро и быстро нажимаю на область редактирования текстового поля, я могу ввести текст, но он отображается серым, как будто я добавляю текст в поле приложения, которое не является передовым.

Я попытался получить фокус окна просмотра с помощью viewDidMoveToWindow, но, очевидно, окна NSMenuItem - это карбоновые окна, которые не очень хорошо обрабатывают ключи.

Короче говоря, какой хороший способ сделать эту работу успешно? Я знаю, что Spotlight - это окно без границ, но оно не подходит для моих целей.

Любые предложения будут очень полезны.

2 ответа

Решение

После долгих исследований, две вещи являются общепринятыми:

(1) Если вы ищете способы подкласса встроенного элемента пользовательского интерфейса для особых возможностей, есть вероятность, что вы делаете что-то не так, или, по крайней мере, есть лучший способ сделать то, что вы пытаетесь сделать,

(2) Причина, по которой следует следовать указаниям интерфейса, заключается в большей совместимости с будущим. Нет гарантии, что субклассовый элемент пользовательского интерфейса будет совместим с будущими версиями ОС.

Brass Tacks - субклассирование элементов пользовательского интерфейса, как правило, не рекомендуется.

Возможно, вы захотите проверить MAAttachedWindow Мэтта Джеммелла.

http://mattgemmell.com/2007/10/03/maattachedwindow-nswindow-subclass

Другие вопросы по тегам