我基本上是把一些网页从一个网站克隆到UITextViews中。我已经设置为属性文本,所以当我从网站粘贴文本,它保留它的大小和字体。然而,许多页面包含超链接的单词(如“点击这里”),这些词不能被识别为链接。
我尝试从文本视图中提取文本(我将粘贴到故事板中),将其转换为NSMutableAttributedString,在范围内将超链接添加为属性,然后转换回NSAttributedString并将其设置为TextView的文本。问题是,范围很奇怪。例如,下面是从0到5的范围(请看左上角):范围从0到5,在8-10 范围从8到10的范围内,我需要它应用到“‘现在我能做什么来帮助?’”。如能就如何开展这项工作提出任何建议,将不胜感激。这是我的代码:
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
}发布于 2017-05-12 06:09:02
您可以指定子字符串的使用范围,如:
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发布于 2017-05-12 08:08:42
在user3575114的帮助下,我开始工作了。下面是我的修正代码,以防任何人有同样的问题:
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
}https://stackoverflow.com/questions/43930334
复制相似问题