Swift中带有超链接文本的UITextView

3
我有一个文本框,我想让一些文本可以被点击。以下是我的代码,请审核并感谢。

let string = "Google"
let linkString = NSMutableAttributedString(string: string)
linkString.addAttribute(NSLinkAttributeName, value: NSURL(string: "https://www.google.com")!, range: NSMakeRange(0, string.characters.count))
linkString.addAttribute(NSFontAttributeName, value: UIFont(name: "HelveticaNeue", size: 25.0)!, range: NSMakeRange(0, string.characters.count))
textView.attributedText = linkString
textView.selectable = true
textView.userInteractionEnabled = true

请使用TextView代替TextField来实现您的概念。 - Anbu.Karthik
2个回答

4
如果您想要您的UITextView检测链接、电话号码、地址、日历事件或者简单地检测所有类型,则使用UIDataDetectorTypes
let yourstring = "Check Google search. www.google.com"

// Update UITextView font and font size.
textVw.font = UIFont(name: "HelveticaNeue", size: 25)

// Make web links clickable
textVw.isUserInteractionEnabled = true
textVw.isSelectable = true
textVw.isEditable = false
textVw.dataDetectorTypes = UIDataDetectorTypes.link

// Update UITextView content
textVw.text = yourstring

// Update hyperlink text colour.
textVw.linkTextAttributes = [NSForegroundColorAttributeName : UIColor.blue, NSUnderlineStyleAttributeName : NSUnderlineStyle.styleNone.rawValue]

textVwUITextView的一个对象。

@IBOutlet var textVw: UITextView!

您也可以像下面的截图一样从故事板中检测文本。 属性检查器

-2
您可以使用此代码使您的UITextField可点击并打开一个URL,例如。
 // This is the label
    @IBOutlet weak var label: UILabel!

override func loadView() {
    super.loadView()

    // here is where you make your label clickable 
    let tap = UITapGestureRecognizer(target: self, action: #selector(self.onClicLabel(sender:)))
    label.isUserInteractionEnabled = true
    label.addGestureRecognizer(tap)
}

// And here are the functions to open a URL 
func onClicLabel(sender:UITapGestureRecognizer) {
    openUrl(urlString: "http://www.google.com")
}


func openUrl(urlString:String!) {
    let url = URL(string: urlString)!
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        UIApplication.shared.openURL(url)
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接