这是我的代码,显示了UILabel中的链接
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textFiled: UITextField!
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let attrStr = try! NSAttributedString(
data: "This is a link <a href='http://www.google.com'>google</a>".dataUsingEncoding(NSUnicodeStringEncoding, allowLossyConversion: true)!,
options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil)
label.attributedText = attrStr
}
}
从图片中可以看出,它正确显示了我想要的链接,但链接无法单击以跳转到Web视图或其他链接。实际上,我需要自定义链接点击事件,我真的不知道:
首先感谢您查看此问题。
答案 0 :(得分:0)
简短的回答是UILabel不支持打开URL。它可以检测到链接存在,但它不会做任何事情。
您可以找到问题解决方案的替代方案,您可以阅读here
答案 1 :(得分:0)
卢克说,UILabels不支持网址。但您可以创建一个看起来像标签的按钮。摆脱背景(所以看起来像文本)并实现按钮的功能以打开webview。您可以使用属性字符串编辑按钮中文本的样式。
当您将按钮添加到UI时,您将需要考虑使用自定义类而不是默认的uibutton类。
你需要:
init
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self)
{
//call the method to configure the button
[self configure];
}
return self;
}
如果使用属性字符串,则实现setTitle或setAttributedTitle
- (void) setTitle:(NSString *)title forState:(UIControlState)state
{
[super setTitle:title forState:state]
}
或
- (void)setAttributedTitle:(NSAttributedString *)title forState: (UIControlState)state{
[super setAttributedTitle:title forState:state];
}
3。配置按钮
-(void) configure{
//configure the buttons label here
//you will want to set no background colour
}
4。将按钮添加到viewcontroller并将类更改为您创建的自定义类。
答案 2 :(得分:0)
强烈建议使用UITextView对象而不是UILabel,但是您可以将KILabel项目用作UILabel替代方案。 见https://github.com/Krelborn/KILabel/blob/master/README.md