如何使NSColorPanel(使用NSColorWell)和NSFontPanel的颜色面板共存?

时间:2009-10-26 14:50:05

标签: objective-c cocoa nsfontpanel nscolorpanel nscolorwell

我的应用程序中有一个偏好设置面板,我有一个NSColorWell用于设置一些背景颜色,一个按钮打开一个NSFontPanel来选择字体。

我想要的行为如下:

  • 当我点击NSColorWell然后在面板中拖动某些颜色时,我希望它能更改我的“ 背景颜色 在我拖动时预览“区域。

  • 当我点击“更改字体...”按钮时,我会显示NSFontPanel,当我选择字体时,它也应该在我的“预览”区域中更改。假设我点击NSFontPanel颜色按钮,我想更改字体的 颜色

从本质上讲,我正在尝试制作两个颜色面板(尽管从我看到的每个应用程序实际上只有一个共享面板)独立工作。

现在,我说打开了字体和颜色面板。当我点击我窗口上的颜色时,它会激活,然后如果我点击字体面板中的颜色按钮,颜色不会影响字体,而是影响背景,因为颜色井保持激活状态,因为我注册了颜色变化我的控制器类中的通知。

有人能举例说明一种特定的方法来编码这种行为吗?似乎有很多不同的方法可以让NSFontPanelNSColorPanel显示(NSFontPanelNSFontManager?),以及处理即将发生的事件的多种方法从面板本身(通知?代表(在NSFontManagerNSFontPanel上)?将控制器插入响应者链?)。我没有找到任何关于一次处理多个色彩源的理想方法的指导方针,而且我有点迷失。

提前致谢!

1 个答案:

答案 0 :(得分:2)

颜色选择器机制经过专门设计,您可以“激活”多个颜色的孔,然后同时设置颜色。我相信字体面板的颜色按钮没有“放开”颜色选择器的原因是因为它显然实际上不是“颜色好”。我没有直接注意到这种行为,但它很容易通过简单的新鲜xib和颜色以及标准文本视图重现。

基本上,您可以单击井和字体颜色,井和选定文本都将更改为拾取的颜色。你甚至可以关闭井,只有文字会改变。但是,在关闭字体面板之前,不能使字体面板“放开”颜色选择器。

我称之为错误:http://bugreport.apple.com