首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在UILabel (TTTAttributedLabel)中检测html中的链接(位置改变)

在UILabel (TTTAttributedLabel)中检测html中的链接(位置改变)
EN

Stack Overflow用户
提问于 2015-06-17 00:04:11
回答 2查看 739关注 0票数 0

我收到了一些来自我的服务器的文本,其中一些是HTML。我能够使用属性字符串和initWithData来格式化文本以显示,以便苹果显示为苹果和蓝色并带下划线。但我没能察觉到窃听器。我使用了TTTAttributedLabel,并能够编写一个虚拟字符串,然后让它创建一个链接,我用didSelectLinkWithURL截获了该链接的点击。问题是,定义文本范围的方法假设您知道链接的文本。我每次都会得到不同的字符串,而我不知道要添加链接的字符串是什么。我应该寻找开始和结束的标签吗?另外,如果字符串中嵌入了多个链接,TTT能否处理?

EN

回答 2

Stack Overflow用户

发布于 2021-03-22 21:43:10

这是解决方案..首先设置属性文本。然后找到每个字符的链接。然后使用addLinkToUrl方法对它们进行设置。

代码语言:javascript
运行
复制
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检测链接点击

代码语言:javascript
运行
复制
- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
    if([[UIApplication sharedApplication] canOpenURL:url]) {
        [[UIApplication sharedApplication] openURL:url];
    } 
}
票数 1
EN

Stack Overflow用户

发布于 2015-06-17 00:26:49

在UIWebview中以html代码显示文本。

代码语言:javascript
运行
复制
<html>
<body>
<p><a href="http://www.w3schools.com/html/">Your text</a></p>
</body>
</html>

在UIwebview中加载关于文本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30872730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档