Как обеспечить сосуществование NSColorPanel (с использованием NSColorWell) и цветовой панели NSFontPanel?

StackOverflow https://stackoverflow.com/questions/1625279

Вопрос

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

Поведение, которое я хочу иметь, следующее:

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top