我收到了一些来自我的服务器的文本,其中一些是HTML。我能够使用属性字符串和initWithData来格式化文本以显示,以便苹果显示为苹果和蓝色并带下划线。但我没能察觉到窃听器。我使用了TTTAttributedLabel,并能够编写一个虚拟字符串,然后让它创建一个链接,我用didSelectLinkWithURL截获了该链接的点击。问题是,定义文本范围的方法假设您知道链接的文本。我每次都会得到不同的字符串,而我不知道要添加链接的字符串是什么。我应该寻找开始和结束的标签吗?另外,如果字符串中嵌入了多个链接,TTT能否处理?
发布于 2021-03-22 13:43:10
这是解决方案..首先设置属性文本。然后找到每个字符的链接。然后使用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];
}
}
发布于 2015-06-16 16:26:49
在UIWebview中以html代码显示文本。
<html>
<body>
<p><a href="http://www.w3schools.com/html/">Your text</a></p>
</body>
</html>
在UIwebview中加载关于文本
https://stackoverflow.com/questions/30872730
复制