如何在Cocoa WebView中编辑所选文本的字体,大小和颜色

时间:2013-10-28 10:24:29

标签: macos cocoa webview webkit

我的OSX应用程序嵌入了一个webview并显示一个自定义工具栏,用于编辑字体/颜色/字体大小等。 webview加载html,用户可以编辑它。我的问题是:

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

    enter image description here

    出于测试目的,我试图以这种方式设置字体大小但没有任何反应

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

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

    更新

    我可以使用以下代码检索选定的HTML:

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

    但我不想直接操纵html ...... :(

1 个答案:

答案 0 :(得分:2)

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

更改文字联系:

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];
}