Как заставить NSColorPanel (используя NSColorWell) и цветную панель NSFontPanel сосуществовать? - PullRequest
2 голосов
/ 26 октября 2009

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 03 ноября 2009

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

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

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

...