1

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

  1. 如何编辑所选文本的字体、颜色或大小等文本属性?
  2. 如何知道光标所在文本部分的字体属性?(我想更改工具栏中显示的信息)

我知道这是可能的,因为 webview 具有我正在寻找的所有功能的右键菜单,但我想在我的工具栏中复制这些功能:

在此处输入图像描述

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

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

关于 webview 中编辑功能的苹果文档真的很差(令人毛骨悚然的例子),当找到关于 webview 的丰富文档时,有人可以向我推荐一个教程、一本书或其他东西吗?

更新:

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

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

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

4

1 回答 1

2

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

更改文本对齐方式:

文本对齐左:

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

文本对齐中心:

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

文本对齐右:

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

文本对齐对齐:

[[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];
}
于 2013-10-31T12:56:11.690 回答