NSControl не работает на разных Mac

Я столкнулся с очень странной проблемой, которую сам не могу решить. У меня есть несколько элементов пользовательского интерфейса, встроенных в NSWindow работает как NSBorderlessWindowMask, Есть 2 NSSlider3 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

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

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