iOS 7 允许使用 HTML 文件或数据初始化 NSAttributedString。我想使用此功能更轻松地在应用程序的“关于”文本中插入链接。
为此,我使用以下代码初始化 NSAttributedString:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"test.html" withExtension:nil];
NSError *error = nil;
NSDictionary *options = nil;
NSDictionary *attributes = nil;
_textView.attributedText = [[NSAttributedString alloc] initWithFileURL:url options:options documentAttributes:&attributes error:&error];
和一个包含以下内容的文件:
<html><body>
<p>This is a <a href=\"http://www.stackoverflow.com\">test link</a>. It leads to StackOverflow.<p>
</body></html>
更新
上面的 HTML 仍然有转义标记,试图在代码中将其用作 NSString。删除逃逸使它工作得很好。下面还回答了我自己的问题。
结束更新
这很好用,并给出了一个带有正确格式和可点击的 url 的字符串。单击该链接会调用 UITextView 的委托 -textView:shouldInteractWithURL:inRange: 方法。但是,检查 URL 参数显示 URL 实际上具有以下绝对字符串:
file:///%22http://www.google.com/%22
这显然没有打开相应的网页。我发现 NSAttributedText 上的文档不够清楚,无法确定发生这种情况的原因。
任何人都知道我应该如何初始化 NSAttributedString 以生成适当的 URL?