我有一些来自我的服务器的文本,其中一些是 HTML。我能够使用属性字符串和 initWithData 来格式化文本以进行显示,以便 Apple 显示为 Apple 和蓝色并带有下划线。但我无法检测到水龙头。我使用了 TTTAttributedLabel 并且能够编写一个虚拟字符串并让它创建一个链接,我用 didSelectLinkWithURL 拦截了该链接。问题是,定义文本范围的方法假设您知道链接的文本。我每次都得到不同的字符串,我不知道要添加链接的字符串是什么。我应该寻找标签打开和关闭吗?另外,如果字符串中嵌入了多个链接,TTT 可以处理吗?
问问题
752 次
2 回答
1
这是解决方案。首先设置您的属性文本。然后找到每个字符的链接。然后使用 addLinkToUrl 方法设置它们。
NSAttributedString *attrString = [[NSAttributedString alloc] initWithData:
[text dataUsingEncoding:NSUTF8StringEncoding]
options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
documentAttributes:nil error:nil];
[label setAttributedText: attrString];
if (label.attributedText != nil && label.attributedText.length > 0) {
for (int i= 0; i < label.attributedText.length; i++) {
NSRange range = NSMakeRange(0,1);
NSDictionary<NSAttributedStringKey,id> *dict = [label.attributedText attributesAtIndex:i effectiveRange:&range];
if (dict[NSLinkAttributeName] != nil) {
NSURL *url = dict[NSLinkAttributeName];
[label addLinkToURL:url withRange:range];
}
}
}
完成此操作后,您将能够使用 TTTAttributedLabelDelegate 检测链接点击
- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
if([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
}
于 2021-03-22T13:43:09.530 回答
0
在 UIWebview 中以 html 代码显示文本。
<html>
<body>
<p><a href="http://www.w3schools.com/html/">Your text</a></p>
</body>
</html>
在 UIwebview 中加载 aboue 文本
于 2015-06-16T16:26:48.727 回答