【问题标题】:UITextView with hyperlink text in SwiftSwift 中带有超链接文本的 UITextView
【发布时间】:2017-08-09 11:24:21
【问题描述】:

我有文本字段,我想获得一些可点击的文本。以下是我的代码,请查看并感谢。

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

标签: ios swift


【解决方案1】:

如果您希望您的 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)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-01-07
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2017-04-02
      • 1970-01-01
      • 2012-07-06
      • 2018-12-23
      相关资源
      最近更新 更多