gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 04:52:29 24 4
gpt4 key购买 nike

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 的委托(delegate) -textView:shouldInteractWithURL:inRange: 方法。但是,检查 URL 参数显示 URL 实际上具有以下绝对字符串:

file:///%22http://www.google.com/%22

这显然无法打开相应的网页。我发现 NSAttributedText 上的文档不够清晰,无法确定为什么会发生这种情况。

有人知道我应该如何初始化 NSAttributedString 以生成适当的 URL 吗?

最佳答案

尝试将 HTML 文件读入 NSString,然后使用:

NSString *path = [[NSBundle mainBundle] pathForResource:@"test.html" ofType:nil];
NSString *html = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
_textView.attributedText = [[NSAttributedString alloc] initWithHTML:html baseURL:nil options:options documentAttributes:&attributes];

如果它与 UIWebViews 中发生的情况类似,至少这应该有效。使用 baseURL 解析 URL。看来在您的代码中,源 url 也用作 baseURL。所以我传递了一个 nil URL 以防止解析本地文件 URL。

关于ios - 使用 HTML 文件初始化 NSAttributedString 将 HTTP 链接解析为文件 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19746375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com