使用NSFontPanel更改WebView

时间:2018-03-06 15:15:58

标签: cocoa webkit nscolorpanel nscolorwell

该应用:

我在Mac App Store中有一个嵌入式WebView的Mac应用程序。 WebView包含contenteditable DIV,充当富文本编辑器。

目标:

我想通过NSColorWellNSColorPanel机制更改WebView中所选文本的前景背景颜色

问题:

当我点击NSColorPanel中的颜色时,NSColorPanel会自动在第一个响应者上调用changeColor:

第一个响应者恰好是一个代表我满意的DIV的私有WebKit类:WebHTMLView

上述机制始终更改所选文本的前景色。我需要一种方法来决定是否应该改变前景或背景颜色。

理想解决方案:

如果可以将NSColorPanelNSColorWell配置为不在第一个响应者上自动调用changeColor:并让我的代码处理颜色更改,那就太棒了。

尝试失败:

1 个答案:

答案 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;
}