该应用:
我在Mac App Store中有一个嵌入式WebView
的Mac应用程序。 WebView包含contenteditable
DIV,充当富文本编辑器。
目标:
我想通过NSColorWell
→NSColorPanel
机制更改WebView中所选文本的前景和背景颜色。
问题:
当我点击NSColorPanel
中的颜色时,NSColorPanel
会自动在第一个响应者上调用changeColor:
。
第一个响应者恰好是一个代表我满意的DIV的私有WebKit类:WebHTMLView
。
上述机制始终更改所选文本的前景色。我需要一种方法来决定是否应该改变前景或背景颜色。
理想解决方案:
如果可以将NSColorPanel
和NSColorWell
配置为不在第一个响应者上自动调用changeColor:
并让我的代码处理颜色更改,那就太棒了。
尝试失败:
usesFontPanel = false
不是一个选项,因为它是WebView
,而不是NSTextView
答案 0 :(得分:0)
要拦截changeColor:
,请设置网络视图的editingDelegate
并实施WebEditingDelegate
方法webView:doCommandBySelector:
。
例如:
- (BOOL)webView:(WebView *)webView doCommandBySelector:(SEL)selector {
if (selector == @selector(changeColor:)) {
if (self.foregroundColorWell.active)
return NO;
return YES;
}
return NO;
}