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是以编程方式填充的,所以我认为使文本响应按钮可能是更好的选择.
Swift 3
我在github中创建了一个LinkUILabel类:https:
//github.com/jorgecsan/LinkUILabel
使用这个你只需要添加url inspectable作为显示图像:
或以编程方式分配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)
希望能帮助到你!:)
One方法将如下所示.
假设是:
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)
| 归档时间: |
|
| 查看次数: |
27374 次 |
| 最近记录: |