应用程序:
我在Mac中有一个带有嵌入式WebView的Mac应用程序。WebView包含一个充当富文本编辑器的contenteditable DIV。
目标:
我想通过→NSColorPanel机制更改WebView中选定文本的WebView前台和背景色。
问题:
当我单击NSColorPanel中的某个颜色时,NSColorPanel会在第一个响应程序上自动调用changeColor:。
第一个响应者恰好是一个私有的WebKit类,它代表我的内容可编辑的DIV:WebHTMLView。
上述机制总是会改变选定文本的前景色。我需要一种方法来决定前景或背景色是否应该改变。
理想解:
如果NSColorPanel和NSColorWell可以配置为不自动调用第一个响应程序上的changeColor:并让我的代码处理颜色变化,那就太好了。
尝试并失败:
usesFontPanel = false不是一个选项,因为它是一个WebView,而不是一个NSTextView
发布于 2018-03-07 10:26:15
若要拦截changeColor:,请设置web视图的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;
}https://stackoverflow.com/questions/49134161
复制相似问题