#objective-c #cocoa #interface-builder #toolbar #nscombobox
#objective-c #какао #конструктор интерфейса #панель инструментов #nscombobox
Вопрос:
Я хочу NSComboBox в NSToolbar. Я делаю это через IB и Xcode 4.2. Я могу поместить ComboBox на панель инструментов и запустить программу. При первом — и только при первом — запуске приложения я получаю следующее исключение, когда устанавливаю фокус в поле со списком:
Разблокировка фокусировки на неправильном представлении ((null)), ожидаемый NSComboBox
В следующий раз, когда я устанавливаю фокус в поле со списком, исключение не возникает.
Если я сделаю то же самое с NSTextField или searchField, я не получу никакого исключения. Поскольку я не помню, чтобы у меня были такие проблемы в более ранней версии Xcode / Objective-C, мне интересно, является ли это ошибкой.
Ответ №1:
У меня такая же проблема. Установка тестового поля, недоступного для редактирования, не была для меня вариантом, и я не мог заставить работать трюк с полем внутри представления.
Поскольку проблема, похоже, связана с «фокусом», я зашел в конструктор интерфейсов и установил кольцо фокусировки на «Нет» для NSComboBox. Это устранило проблему для меня.
Программно это можно сделать с помощью -setFocusRingType:NSFocusRingTypeNone
.
Ответ №2:
Вы уже пробовали следующий обходной путь?
Перед удалением NSComboBox на панели инструментов попробуйте удалить пустой NSView на панели инструментов. Это должно создать для вас элемент панели инструментов с пустым представлением. Затем поместите NSComboBox внутри NSView внутри элемента панели инструментов, который вы только что создали.
У меня были похожие проблемы, и это сработало для меня.
Ответ №3:
У меня была та же проблема. Изменение поведения поля со списком, чтобы его можно было выбирать только, исправляет это.
К счастью для меня, мне не нужно, чтобы поле со списком было доступно для редактирования.
Ответ №4:
Та же проблема с NSComboBox внутри NSPanel. Я изменил кольцо фокусировки с «по умолчанию» на «нет» в IB. Это решило проблему.
Вот еще немного предыстории. Мой код работал нормально, пока не было внесено несколько изменений: проблема возникла после преобразования из Xcode 4.2 (Snow Leopard) в 4.3 (Lion). Также этот переход включал переход от GC к ARC.