Как заставить NSColorPanel (используя NSColorWell) и цветную панель NSFontPanel сосуществовать?

В моем приложении есть панель настроек, в которой NSColorWell для установки некоторого цвета фона и кнопки, которая открывает NSFontPanel для выбора шрифта.

Я хочу иметь следующее поведение:

  • Когда я нажимаю на NSColorWell затем перетащите на панель какой-нибудь цвет, я хочу, чтобы он менял цвет фона в области предварительного просмотра при перетаскивании.

  • Когда я нажимаю кнопку "Изменить шрифт...", я показываю NSFontPanel и когда я выбираю шрифт, он также должен измениться в области предварительного просмотра. Скажем, я нажимаю на цветную кнопку NSFontPanelЯ хочу изменить цвет моего шрифта.

По сути, я пытаюсь заставить обе цветовые панели (хотя из того, что я видел, на самом деле только одна общая панель на приложение) работать независимо.

Прямо сейчас, скажем, у меня открыты панели шрифтов и цветов. Когда я щелкаю по цвету в окне, оно активируется, а затем, если я нажимаю кнопку цвета на панели шрифтов, цвет влияет не на шрифт, а на фон, так как цвет остается активным и поскольку я зарегистрировался для изменения цвета уведомления в моем классе контроллера.

Может ли кто-нибудь дать мне пример конкретного способа кодирования такого поведения? Кажется, есть несколько способов сделать NSFontPanel а также NSColorPanel объявиться (NSFontPanel или же NSFontManager?), а также множество способов обработки событий, поступающих от самих панелей (уведомлений делегатов (на NSFontManager или же NSFontPanel)? вставить контроллер в цепочку респондента?). Я не нашел никаких рекомендаций по идеальному способу обработки более чем одного источника цвета одновременно, и я немного растерялся.

Заранее спасибо!

1 ответ

Решение

Механизм выбора цвета специально разработан для того, чтобы вы могли "активировать" несколько цветовых лунок, а затем одновременно устанавливать их цвет. Я полагаю, что причина, по которой цветная кнопка панели шрифтов не "отпускает" палитру цветов, заключается в том, что она, по-видимому, на самом деле не является "цветовой гаммой". Я не заметил этого поведения напрямую, но его легко воспроизвести с помощью простого свежего XIB с цветным колодцем и стандартным представлением текста.

По сути, вы можете щелкнуть как по лунке, так и по цвету шрифта, и лунка, и выбранный текст изменятся на выбранный цвет. Вы можете даже выключить колодец, и только текст изменится. Однако нельзя заставить панель шрифтов "отпускать" палитру цветов, пока вы не закроете панель шрифтов.

Я бы назвал это ошибкой: http://bugreport.apple.com/

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