问题标签 [nscolorpanel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2171 浏览

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

我的应用程序中有一个首选项面板,其中有一个NSColorWell用于设置背景颜色的按钮和一个NSFontPanel用于选择字体的按钮。

我想要的行为如下:

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

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

本质上,我正在尝试使两个颜色面板(尽管据我所见,每个应用程序实际上只有一个共享面板)独立工作。

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

有人可以给我一个具体方法来编码这种行为的例子吗?似乎有很多不同的方法可以使NSFontPanelNSColorPanel显示(NSFontPanelNSFontManager?),以及处理来自面板本身的事件的许多方法(通知?代表(在NSFontManagerNSFontPanel)?将控制器插入响应者链?)。我还没有找到任何关于一次处理多个颜色源的理想方法的指导方针,我有点迷茫。

提前致谢!

0 投票
1 回答
241 浏览

macos - CKEditor 和 NSColorPanel:一个谜

我正在使用 WebView 在我的 Cocoa 应用程序中集成 HTML 编辑器CKEditor 。

到目前为止,它按预期工作,除了一件事:如果我在应用程序的其他任何地方打开一个NSColorPanel并选择一种颜色,CKEditor 中选择的颜色会自动改变!

这怎么可能发生?NSColorPanel(一个 Cocoa 窗口)如何与 CKEditor(一个 HTML 小部件!)通信?最后,我怎样才能防止这种行为?

代码

我通过子类化 WebView 和覆盖来加载 CKEditor initWithFrame:frameName:groupName

NSColorPanel 是这样打开的:

到目前为止我发现了什么

  • WebView类参考说 WebView 实现changeColor:

此方法由 NSColorPanel 发送方调用,其行为类似于 NSTextView 中的 changeColor: 方法。

但是,我尝试覆盖changeColor:它并没有被调用。

  • 当通过 NSColorPanel 更改选择颜色时,CKEditor 添加一个<font>元素而不是一个<span>元素(就像通过工具栏更改文本颜色时所做的那样)。这意味着选择颜色不会通过传统方式(可能是粘贴板?)改变。
  • NSFontPanel 也会发生同样的事情。
0 投票
2 回答
267 浏览

macos - WebView 作为响应者

我想在子类中接收changeFont:andchangeColor:消息WebView

根据文档,这些方法由响应者发送NSFontManagerNSColorPanel分别发送给响应者。

然而,他们从未在我的WebView子类中被调用。这是预期的行为吗?如果没有,我做错了什么?

0 投票
3 回答
733 浏览

macos - NSColorPanel 阻止鼠标向上事件

我正在使用设置为持续更新的 NSColorWell。我需要知道用户何时从颜色面板中的颜色选择器编辑控件(鼠标向上)。

我安装了一个事件监视器并成功接收到鼠标按下和鼠标移动的消息,但是 NSColorPanel 似乎阻止了鼠标。

最重要的是,我想将最终选择的颜色添加到我的撤消堆栈中,而不会在用户选择他们的选择时生成所有中间颜色。

有没有办法创建自定义 NSColorPanel 并用覆盖其 mouseUp 并发送消息的想法替换共享面板?

在我的研究中,这个问题已经被提出过几次,但是我还没有看到一个成功的解决方案。

问候, - George Lawrence Storm,Keencoyote 发明服务

0 投票
1 回答
1071 浏览

objective-c - NSButton 子类作为 colorwell 并防止 NSColorPanel 接触第一响应者

我遵循了一些使NSButton子类工作的示例NSColorWell(因为我们的NSButton子类已经为我们提供了我们需要的外观行为),但是我注意到在使用按钮调用面板并更改颜色之后,它也改变了颜色我们文档中的选定文本。如果我改为NSColorWell使用我们的外观自定义进行子类化,它不会有这个问题吗?

但是,我仍然希望有一种解决方法可以避免这种情况,并且仍然可以让我们使用我们的按钮子类。我已经看到讨论线程建议让按钮本身成为第一响应者,但是由于按钮位于单独的调色板中,因此我无法使其正常工作。此外,我不希望更改响应者链或让调色板成为关键窗口。覆盖 setColor:的类别NSColorPanel会有多邪恶,使其发布预期的通知但不触及第一响应者?

(注意,我目前正在使用BFColorPickerPopoverDrummerB https://github.com/DrummerB/BFColorPickerPopover ,而不是简单地打开颜色面板。但是我不认为这很复杂。我有同样的NSColorPanel/第一个集成之前的响应者问题)。

被要求发布源代码,所以这是我的 NSButton 子类中的相关位(注意,使用上面提到的选择器弹出框而不是NSColorPanel直接使用):

。H:

米:

附录:

我尝试使用普通NSColorWell代替我的 NSButton 子类,但同样的问题。changeColor:除了调用操作方法外,面板中选择的颜色还会调用第一响应者。所以忘记NSButton了我的问题中的所有内容,一般来说,一个人如何使用 a NSColorWell,其颜色也不能被推到第一响应者身上?必须求助于自定义预期的第一响应者以选择性地忽略changeColor:,还是让NSColorWell第一响应者真的是要做的事情,或者别的什么?

0 投票
4 回答
1499 浏览

objective-c - 将不透明度滑块添加到颜色面板以获取一种颜色而不是其他颜色

我想为 1 个特定的 NSColorWell 显示的 NSColorPanel 添加一个不透明度滑块。所有其他颜色孔不应显示不透明度滑块。

我知道我可以像这样为 sharedColorPanel 设置它:

但是,当我只希望这种行为适用于单一颜色时,我该怎么做呢?

我尝试添加一个 IBAction,但是当您单击颜色时不会调用此 IBAction。(所以在面板显示之前我无法进行任何更改)。当您在颜色面板中选择另一种颜色时调用它。

0 投票
1 回答
733 浏览

objective-c - 在一个控制器中共享 NSColorPanel

我在一个控制器中共享了 NSControlPanel。我将颜色更改为我的 NSTextView 背景和文本前景色。但是当我在面板中更改背景颜色时,文本颜色也已自动更改。问题出在哪里?谢谢回复!

我认为这是 (void)changeAttributes:(id)sender 中的错误,所以我设置了断点。但是当我更改背景颜色时,并没有调用changeAttributes,所以没关系。

0 投票
1 回答
432 浏览

cocoa - NSFontPanel - 如何处理关闭

我需要处理 NSFontPanel 已关闭。发生这种情况时,是否有任何方法被调用?谢谢回复。

0 投票
0 回答
201 浏览

cocoa - NSColorPanel 级别

我正在制作一个带有全屏透明窗口的应用程序。首选项有一个颜色很好,显示为NSColorPanel. 我尝试更改此面板的级别:

但这不起作用。有没有办法解决这个问题?替换 NSColorPanel 的自定义类也很好!

0 投票
1 回答
421 浏览

objective-c - NSColorPanel 的选择器被调用了两次

我已经共享了 NSColorPanel 的实例,并将选择器设置为他。我将它用于背景颜色和字体颜色。当我想设置文本颜色时,一切正常,但是当我想设置背景颜色时,选择器被调用两次,并且背景颜色已更改为以前的颜色。有一些代码:

选择器:

谢谢回复!