首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Swift)在TextView中的一个大字符串上向少量字符添加超链接

(Swift)在TextView中的一个大字符串上向少量字符添加超链接
EN

Stack Overflow用户
提问于 2017-05-12 06:01:39
回答 2查看 634关注 0票数 1

我基本上是把一些网页从一个网站克隆到UITextViews中。我已经设置为属性文本,所以当我从网站粘贴文本,它保留它的大小和字体。然而,许多页面包含超链接的单词(如“点击这里”),这些词不能被识别为链接。

我尝试从文本视图中提取文本(我将粘贴到故事板中),将其转换为NSMutableAttributedString,在范围内将超链接添加为属性,然后转换回NSAttributedString并将其设置为TextView的文本。问题是,范围很奇怪。例如,下面是从0到5的范围(请看左上角):范围从0到5,在8-10 范围从8到10的范围内,我需要它应用到“‘现在我能做什么来帮助?’”。如能就如何开展这项工作提出任何建议,将不胜感激。这是我的代码:

代码语言:javascript
复制
import UIKit

class ApproachController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textBox: UITextView!

override func viewDidLoad() {
    super.viewDidLoad()

    self.textBox.delegate = self
    let text = textBox.attributedText.mutableCopy() as! NSMutableAttributedString
    text.addAttribute(NSLinkAttributeName, value: "https://campushealth.unc.edu/services/counseling-and-psychological-services/how-support-student-distress/what-can-i-do-right-now", range: NSMakeRange(8, 10))
   self.textBox.attributedText = text.copy() as! NSAttributedString
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-12 06:09:02

您可以指定子字符串的使用范围,如:

代码语言:javascript
复制
    let strMsg : NSString = "By registering you agree to our Terms & Condtions & Privacy Policy" - Replace this with your textBox.text

    attrMsg.addAttribute(NSLinkAttributeName, value: "http://www.seqlegal.com/free-legal-documents/website-terms-and-conditions", range: strMsg.range(of: "Terms & Condtions"))

textBox.attributedText = attrMsg
票数 1
EN

Stack Overflow用户

发布于 2017-05-12 08:08:42

在user3575114的帮助下,我开始工作了。下面是我的修正代码,以防任何人有同样的问题:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()

    self.textBox.delegate = self

    let strang = textBox.text! as NSString

    let text = textBox.attributedText.mutableCopy() as! NSMutableAttributedString
    text.addAttribute(NSLinkAttributeName, value: "https://campushealth.unc.edu/services/counseling-and-psychological-services/how-support-student-distress/what-can-i-do-right-now", range: strang.range(of: "What can I do now to help?"))

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

https://stackoverflow.com/questions/43930334

复制
相关文章

相似问题

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