Как заставить NSColorPanel (используя NSColorWell) и цветную панель NSFontPanel сосуществовать?
В моем приложении есть панель настроек, в которой NSColorWell
для установки некоторого цвета фона и кнопки, которая открывает NSFontPanel
для выбора шрифта.
Я хочу иметь следующее поведение:
Когда я нажимаю на
NSColorWell
затем перетащите на панель какой-нибудь цвет, я хочу, чтобы он менял цвет фона в области предварительного просмотра при перетаскивании.Когда я нажимаю кнопку "Изменить шрифт...", я показываю
NSFontPanel
и когда я выбираю шрифт, он также должен измениться в области предварительного просмотра. Скажем, я нажимаю на цветную кнопкуNSFontPanel
Я хочу изменить цвет моего шрифта.
По сути, я пытаюсь заставить обе цветовые панели (хотя из того, что я видел, на самом деле только одна общая панель на приложение) работать независимо.
Прямо сейчас, скажем, у меня открыты панели шрифтов и цветов. Когда я щелкаю по цвету в окне, оно активируется, а затем, если я нажимаю кнопку цвета на панели шрифтов, цвет влияет не на шрифт, а на фон, так как цвет остается активным и поскольку я зарегистрировался для изменения цвета уведомления в моем классе контроллера.
Может ли кто-нибудь дать мне пример конкретного способа кодирования такого поведения? Кажется, есть несколько способов сделать NSFontPanel
а также NSColorPanel
объявиться (NSFontPanel
или же NSFontManager
?), а также множество способов обработки событий, поступающих от самих панелей (уведомлений делегатов (на NSFontManager
или же NSFontPanel
)? вставить контроллер в цепочку респондента?). Я не нашел никаких рекомендаций по идеальному способу обработки более чем одного источника цвета одновременно, и я немного растерялся.
Заранее спасибо!
1 ответ
Механизм выбора цвета специально разработан для того, чтобы вы могли "активировать" несколько цветовых лунок, а затем одновременно устанавливать их цвет. Я полагаю, что причина, по которой цветная кнопка панели шрифтов не "отпускает" палитру цветов, заключается в том, что она, по-видимому, на самом деле не является "цветовой гаммой". Я не заметил этого поведения напрямую, но его легко воспроизвести с помощью простого свежего XIB с цветным колодцем и стандартным представлением текста.
По сути, вы можете щелкнуть как по лунке, так и по цвету шрифта, и лунка, и выбранный текст изменятся на выбранный цвет. Вы можете даже выключить колодец, и только текст изменится. Однако нельзя заставить панель шрифтов "отпускать" палитру цветов, пока вы не закроете панель шрифтов.
Я бы назвал это ошибкой: http://bugreport.apple.com/