我正在使用WebView將HTML編輯器CKEditor集成到我的Cocoa應用程序中。CKEditor和NSColorPanel:一個謎
到目前爲止,它的工作原理除了一件事:如果我在應用程序的其他地方打開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:
:
此方法由NSColorPanel發件人調用,對NSTextView中的changeColor:方法的行爲類似 。
但是,我試圖凌駕changeColor:
,它沒有被調用。
- 當選擇彩色經由NSColorPanel改變,CKEditor的添加
<font>
元件代替<span>
元件(等確實當文本顏色通過工具欄改變)。這意味着選擇顏色不會被傳統方式(可能是粘貼板?)改變。 - 同樣的事情發生在NSFontPanel。
+1點上!看起來CKEditor使用'contentEditable',這就是奇怪的行爲。 – hpique