NSComboBox в NSToolbar через IB выдает исключение - PullRequest
3 голосов
/ 26 октября 2011

Я хочу NSComboBox в NSToolbar. Я делаю это через IB и Xcode 4.2. Я могу разместить comboBox на панели инструментов и запустить программу. В первый раз - и только в первый раз - приложение запускается, я получаю следующее исключение, когда устанавливаю фокус в ComboBox:

Разблокировка Фокус на неправильном представлении ((ноль)), ожидаемый NSComboBox

В следующий раз, когда я установлю фокус в выпадающем списке, никаких исключений не возникает.

Если я делаю то же самое с NSTextField или searchField, я не получаю никаких исключений. Поскольку я не помню, чтобы у меня были такие проблемы в более ранней версии Xcode / Objective-C, мне интересно, если это ошибка.

Ответы [ 4 ]

1 голос
/ 09 апреля 2012

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

Поскольку проблема, похоже, связана с «фокусом», я пошел к построителю интерфейса и установил кольцо фокусировки на «Нет» для NSComboBox. Это решило проблему для меня.

Программно это можно сделать с помощью -setFocusRingType:NSFocusRingTypeNone.

0 голосов
/ 24 апреля 2012

Та же проблема, с NSComboBox внутри NSPanel. Я изменил фокусировочное кольцо со «по умолчанию» на «нет» в IB. Это решило проблему.

Вот еще немного фона. Мой код работал нормально, пока не было сделано несколько изменений: проблема появилась после преобразования из Xcode 4.2 (Snow Leopard) в 4.3 (Lion). Также этот переход включал в себя переход от GC к ARC.

0 голосов
/ 29 февраля 2012

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

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

0 голосов
/ 25 января 2012

Вы уже пробовали следующий обходной путь?

Перед удалением NSComboBox на панели инструментов попробуйте удалить пустой NSView на панели инструментов. Это должно создать элемент панели инструментов с пустым представлением для вас. Затем поместите NSComboBox в NSView внутри только что созданного элемента панели инструментов.

У меня были похожие проблемы, и у меня это сработало.

...