【发布时间】:2018-03-07 18:26:15
【问题描述】:
应用:
我在 Mac App Store 中有一个 Mac 应用程序,其中嵌入了 WebView。 WebView 包含一个contenteditable DIV,充当富文本编辑器。
目标:
我想通过NSColorWell→NSColorPanel机制改变WebView中选中文本的foreground和background color。
问题:
当我单击NSColorPanel 中的颜色时,NSColorPanel 会自动在第一响应者上调用changeColor:。
第一个响应者恰好是一个私有 WebKit 类,代表我的内容可编辑 DIV:WebHTMLView。
上述机制总是改变所选文本的前景色。我需要一种方法来决定是否应该更改前景色或背景色。
理想的解决方案:
如果NSColorPanel 和NSColorWell 可以配置为不自动在第一响应者上调用changeColor: 并让我的代码处理颜色变化,那就太好了。
尝试并失败:
- 设置
usesFontPanel = false不是一个选项,因为它是WebView,而不是NSTextView - 这里建议的尝试过的解决方案:NSButton subclass as colorwell & preventing NSColorPanel from touching the first responder
- 子类化 WebView 没有帮助,第一响应者是一个私有 WebKit 类
- 临时切换第一响应者会导致闪烁(不可接受)
- 应用必须与 Mac App Store 兼容
【问题讨论】:
-
NSFontPanel、NSColorPanel或NSColorPicker? -
@Willeke 不是重复的,您引用的问题中的解决方案仅适用于 NSTextView (usesFontPanel = false),我使用的是 WebView。我编辑了我的问题。
标签: cocoa webkit nscolorpanel nscolorwell