使用HTML文件初始化NSAttributedString将HTTP链接解析为文件URL

Spa*_*het 5 uitextview nsattributedstring uitextviewdelegate ios ios7

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];
Run Code Online (Sandbox Code Playgroud)

和包含以下内容的文件:

<html><body>
<p>This is a <a href=\"http://www.stackoverflow.com\">test link</a>. It leads to StackOverflow.<p>
</body></html>
Run Code Online (Sandbox Code Playgroud)

更新

上面的HTML仍然有试图在代码中使用它作为NSString的转义标记.删除逃脱使它工作得很好.还回答了我自己的问题.

结束更新

这样可以正常工作,并提供一个字符串,其中url格式正确且可单击.单击该链接将调用UITextView的委托-textView:shouldInteractWithURL:inRange:方法.但是,检查URL参数显示URL实际上具有以下绝对字符串:

file:///%22http://www.google.com/%22
Run Code Online (Sandbox Code Playgroud)

这显然没有打开相应的网页.我没有发现NSAttributedText上的文档足够清楚,以确定为什么会发生这种情况.

任何人都知道如何初始化NSAttributedString以生成适当的URL?

Spa*_*het 0

这个问题的答案是 HTML 文件无效。

直接从 Objective-C 中定义的字符串复制/粘贴 html 后,我忘记删除每个引号之前的转义符。当然,这会直接转换为文件 url,而不是 HTML url。删除转义标记可以解决此问题。