如何使用Swift创建"超链接"?

Ast*_*oCB 1 cocoa-touch hyperlink ios swift

我正在努力制作单独的文本片段UILabel.我正在寻找的通常被称为Web开发中的超链接.

<a href="//example.com">Link 1</a>
<a href="//example.com/example">Link 2</a>
<a href="//example.com/other_example">Link 3</a>
Run Code Online (Sandbox Code Playgroud)

每个a标签都是它自己的UILabel,理想情况下,href当点击标签之间的文本时,它会打开指定的Safari .

我已经在Objective-C中找到了大量关于如何做这类事情的资源,但是它们看起来都不必要复杂,并且不能很好地转换为Swift(它们适合于一个不能很好地运行的Objective-C组织结构在Swift中反对推荐使用该语言的方式).

以下是一些:

如果我有3 UILabel秒,

第1项

第2项

第3项

那么什么是最好的"Swift-y"方式让每个项目在Safari中打开一个不同的URL?

我可以为每个按钮创建单独的按钮,但UILabels是以编程方式填充的,所以我认为使文本响应按钮可能是更好的选择.

Jor*_*ero 6

Swift 3 我在github中创建了一个LinkUILabel类:https: //github.com/jorgecsan/LinkUILabel 使用这个你只需要添加url inspectable作为显示图像: 带url的示例标签 或以编程方式分配url变量:

linkUILabel.url = "www.example.com"
Run Code Online (Sandbox Code Playgroud)

如果你想通过自己实现我也找到了解决方案!:)

使用:

// This is the label
@IBOutlet weak var label: UILabel!

override func loadView() {
    super.loadView()

    // This is the key
    let tap = UITapGestureRecognizer(target: self, action: #selector(self.onClicLabel(sender:)))
    label.isUserInteractionEnabled = true
    label.addGestureRecognizer(tap)
}

// And that's the function :)
func onClicLabel(sender:UITapGestureRecognizer) {
    openUrl("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)
    }
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!:)


Pau*_*w11 5

One方法将如下所示.
假设是:

  • self.urls是一个字符串数组,包含与每个URL关联的url UILabel.
  • 每个UILabel tag都已设置为数组中的相应索引
  • labelTapped:被设置为touchUpInside标签的处理程序.
import Foundation
import UIKit

class urltest {

    var urls:[String]

    init() {
        self.urls=[String]()  // Load URLs into here
    }

    @IBAction func labelTapped(sender:UILabel!) {

        let urlIndex=sender.tag;
        if (urlIndex >= 0 && urlIndex < self.urls.count) {
           self.openUrl(self.urls[urlIndex]);
        }

    }

    func openUrl(url:String!) {

        let targetURL=NSURL.URLWithString(url)

        let application=UIApplication.sharedApplication()

        application.openURL(targetURL);

    }
}
Run Code Online (Sandbox Code Playgroud)

  • 在我看来,你已经复制了一个按钮的功能. (2认同)