2012-04-02 4 views
0

ребята! У меня есть NSSearchField на панели инструментов окна. Я говорю в окно, чтобы установить его первый ответчик в поле поиска: он работает. Теперь: если я попрошу окно рассказать мне, что является его первым ответчиком, это НЕ поле поиска, даже если поле поиска имеет фокус ... Есть ли способ установить поле поиска в качестве первого ответчика окна, не имея этого несоответствие?NSSearchField как первый ответчик

Спасибо

ответ

2

Нет. Или, по крайней мере, не легко. Когда поле поиска или любое простое текстовое поле имеет фокус клавиатуры, на самом деле это не первый ответчик. Когда экземпляр класса NSTextField (NSSearchField) предлагается стать первым ответчиком, он запрашивает окно для «редактора полей», которое является другим текстовым полем, используемым исключительно для редактирования. Этот редактор помещается в текстовое поле и устанавливается как фактический первый ответчик.

Чтобы получить текстовое поле или поле поиска, вы можете подняться вверх по иерархии представлений, используя superview на первом ответчителе. (Я думаю, что это прямой просмотр в полевом редакторе.) Я уверен, что фактическое текстовое поле также задано как делегат редактора поля, поэтому вы также можете получить его таким образом, но я не помню, где я его читал.

Дополнительная информация о редакторе полей доступна через NSWindow class reference.

+0

Для меня, по крайней мере, это супервизор супервизора в редакторе поля. Прямым надзором редактора полей является частный класс просмотра клипов. – Vervious