2013-10-28 40 views
1

我的OSX应用程序嵌入了webview并显示用于编辑字体/颜色/字体大小等的自定义工具栏。 webview加载html并且用户能够编辑它。我的问题是:如何在Cocoa WebView中编辑选定文本的字体,大小和颜色

  1. 如何编辑所选文本的字体,颜色或大小等文本属性?
  2. 如何知道光标所在的文本部分的字体属性? (我要更改的工具栏中显示的信息),我知道这是可能的,因为网页视图与所有我正在寻找的功能右键菜单

,但我想复制我的工具栏这个功能:

enter image description here

出于测试目的,我想设置字体大小以这种方式,但什么也没有发生

[_contentWebView changeFont:[NSFont systemFontOfSize:32]]; 
[_contentWebView setNeedsDisplay:YES]; 

苹果文档关于webview中的编辑功能非常差(creepy example),有人可以在找到关于webview的丰富文档时向我推荐教程,书籍或其他内容?

更新:

我可以retrive所选择的HTML与此代码:

-(NSString *)getSelectedHtml 
{ 
    DOMRange *ff = [self selectedDOMRange]; 
    NSString *marki = [ff markupString]; 
    return marki; 
} 

,但我不希望直接操纵的HTML ... :(

回答

2

现在我可以回答我的回答是,错误是在方法中,WebView符合NSText行为,所以当webview是第一响应者时,您应该使用标准方法更改字体,颜色等,例如:

更改文本allignement:

TextAlignementLeft:

[[self.view.window firstResponder] performSelector:@selector(alignLeft:) withObject:nil]; 

TextAlignementCenter:

[[self.view.window firstResponder] performSelector:@selector(alignCenter:) withObject:nil]; 

TextAlignementRight:

[[self.view.window firstResponder] performSelector:@selector(alignRight:) withObject:nil]; 

TextAlignementJustify:

[[self.view.window firstResponder] performSelector:@selector(alignJustified:) withObject:nil]; 

添加或删除字体特性如粗体和斜体:

case ToolbarToolBold: 
{ 
NSButton * dummyButton = [[NSButton alloc] init]; 
BOOL enabled = [(NSNumber*)value boolValue]; 
[dummyButton setTag:2]; 
if(enabled) 
{ 
    [fontManager addFontTrait:dummyButton]; 
} 
else 
{ 
    [fontManager removeFontTrait:dummyButton]; 
} 
} 
break; 
case ToolbarToolItalic: 
{ 
NSButton * dummyButton = [[NSButton alloc] init]; 
BOOL enabled = [(NSNumber*)value boolValue]; 
[dummyButton setTag:1]; 
if(enabled) 
{ 
    [fontManager addFontTrait:dummyButton]; 
} 
else 
{ 
    [fontManager removeFontTrait:dummyButton]; 
} 
} 
break; 
case ToolbarToolUnderline: 
{ 
[[self.view.window firstResponder] performSelector:@selector(underline:) withObject:nil]; 
} 
+1

如果Web视图不是第一响应者,你仍然可以强制动作被发送给它:'ID oldTarget = [ fontManager target]; [fontManager setTarget:webView]; [fontManager addFontTrait:dummyButton]; [fontManager setTarget:oldTarget];'也可以使用'modifyFont:'。 – DarkDust

+0

你如何确定当前的选择是否具有特质? (OSX如何通过构建系统菜单来完成它(将动作从添加切换到删除) –

相关问题