NSControl не работает на разных Mac
Я столкнулся с очень странной проблемой, которую сам не могу решить. У меня есть несколько элементов пользовательского интерфейса, встроенных в NSWindow
работает как NSBorderlessWindowMask
, Есть 2 NSSlider
3 NSButton
, NSComboBox
и NSColorWell
,
Приложение собирается для цели 10.7 и имеет включенную песочницу.
На моей машине разработки каждый элемент работает как задумано. NSComboBox
имеет рабочий DataSource
а также Delegate
, NSColorWell
тоже работает. Когда я нажимаю в NSComboBox
Я могу ввести текст в него. И NSColorWell
открывает выбор цвета.
В тот момент, когда я передаю свое приложение моему бета-тестеру, NSComboBox
и NSColorWell
не может быть отредактировано. Это означает, что я могу добавить элементы в DataSource
из NSComboBox
(через импорт), и они могут быть выбраны в раскрывающемся меню, но я не могу нажать на NSComboBoxCell
и напиши текст. Также не открывается выбор цвета, когда я нажимаю NSColorWell
,
Я понятия не имею, что может вызвать такое поведение. Каждый элемент подключен правильно, и я запускаю тот же двоичный файл, что и мой бета-тестер. Обе системы работают под управлением Mountain Lion в последней версии. Я пытался создать NSButton
для бета-тестера, который запускает следующие методы на NSComboBox
:
[self.nameCB reloadData];
[self.nameCB setEnabled:YES];
[self.nameCB setEditable:YES];
[self.nameCB setNeedsDisplay:YES];
[self.nameCB setFrame:self.nameCB.frame];
[self.nameCB becomeFirstResponder];
[self.nameCB setSelectable:YES];
Никто не помог. Я понятия не имею, как "отладить" это поведение. У вас есть какие-нибудь предложения?
Изменить: я смог сломать его немного. Когда я удаляю линию
[self.window setStyleMask:NSBorderlessWindowMask];
Оно работает. Но я хочу получить хороший обзор от удаления заголовка, так что это только немного помогает.
1 ответ
Как я уже отредактировал в своем вопросе, я обнаружил, что эта проблема вызвана NSBorderlessWindowMask
стиль на моей главной NSWindow
, Я не нашел другого способа обойти это, кроме подклассов NSWindow
,
Я использовал этот пример в качестве руководства. Это также работает, если вы просто извлекаете CustomWindow
класс из проекта и добавить его в свой проект. Затем просто установите класс вашего окна в IB на CustomWindow
Я до сих пор не знаю, что вызвало эту проблему. Если у кого-то есть идея, не стесняйтесь оставлять другой ответ ниже, пожалуйста.