gpt4 book ai didi

macos - CKEditor 和 NSColorPanel : a mystery

转载 作者:行者123 更新时间:2023-12-03 17:56:31 24 4
gpt4 key购买 nike

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

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

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

代码

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

- (id) initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName {
if (self = [super initWithFrame:frame frameName:frameName groupName:groupName]) {
NSURL *baseURL = [[NSBundle bundleForClass:self.class] URLForResource:@"ckeditor" withExtension:nil];
[self.mainFrame loadHTMLString:kCKEditorTemplate baseURL:baseURL];
}
return self;
}

NSColorPanel 的打开方式如下:

- (IBAction)menuColor:(id)sender {
[[NSColorPanel sharedColorPanel] orderFront:self];
}

到目前为止我发现了什么

  • WebView类引用说 WebView 实现 changeColor: :

This method is invoked by the NSColorPanel sender and behaves similar to the changeColor: method in NSTextView.

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

  • 当通过 NSColorPanel 更改选择颜色时,CKEditor 会添加 <font>元素而不是 <span>元素(就像通过工具栏更改文本颜色时所做的那样)。这意味着选择颜色不会通过传统方式更改(也许是粘贴板?)。
  • NSFontPanel 也会发生同样的情况.

最佳答案

我对 cocoa 和 webview 没有任何经验,我只能尝试根据 IE activeX 控件来思考这一点,所以我可能是错的。

话虽这么说:

如果插入的代码使用的是 font 而不是 span,那么我认为插入该代码的不是 CKEditor,而是 Webkit。

您可以尝试加载一个页面,该页面不是 CKEditor 实例,而是只有一个内容可编辑的 div,然后执行相同的测试来验证它是否是在 webkit 内完成的:

<div contentEditable=true>this is editable, select some text and open the nscolorpanel</div>

关于macos - CKEditor 和 NSColorPanel : a mystery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12543320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com