如何让NSColorPanel(使用NSColorWell)和NSFontPanel的颜色面板共存?
-
06-07-2019 - |
题
我的应用程序中有一个首选项面板,其中有一个 NSColorWell
用于设置一些背景颜色和打开一个按钮 NSFontPanel
用于选择字体。
我想要的行为如下:
当我点击
NSColorWell
然后拖动面板中的一些颜色,我希望它改变 背景颜色 当我拖动时在我的“预览”区域中。当我单击“更改字体...”按钮时,我会显示我的
NSFontPanel
当我选择字体时,它也应该在我的“预览”区域中发生变化。假设我点击 颜色 按钮的NSFontPanel
, ,我想改变 我的字体颜色.
本质上,我试图让两个颜色面板(尽管从我所看到的情况来看,每个应用程序实际上只有一个共享面板)独立工作。
现在,假设我打开了字体和颜色面板。当我单击窗口上的颜色井时,它会激活,然后如果我单击字体面板中的颜色按钮,颜色不会影响字体,而是影响背景,因为颜色井保持激活状态并且因为我注册了颜色更改我的控制器类中的通知。
有人能给我一个编码这种行为的具体方法的例子吗?似乎有很多不同的方法可以制作 NSFontPanel
和 NSColorPanel
出现 (NSFontPanel
或者 NSFontManager
?),以及处理来自面板本身的事件的许多方法(通知?代表们(关于 NSFontManager
或者 NSFontPanel
)?将控制器插入响应者链?)。我还没有找到任何有关同时处理多种颜色源的理想方法的指南,我有点迷失了。
提前致谢!
解决方案
颜色选择器机制经过专门设计,以便您可以“激活”多个颜色孔,然后同时设置它们的颜色。我相信字体面板的颜色按钮不“放开”颜色选择器的原因是因为它显然实际上不是“颜色井”。我没有直接注意到这种行为,但可以使用带有颜色良好和标准文本视图的简单新鲜 xib 轻松重现。
本质上,您可以单击孔和字体颜色,孔和选定的文本都将更改为选取的颜色。您甚至可以关闭该井,只有文本会改变。但是,在关闭字体面板之前,您无法让字体面板“放开”颜色选择器。
我称之为错误: http://bugreport.apple.com