iOS- Swift 如何使链接单击在 UILabel

标签: UILabel HTML Swift
发布时间: 2017/3/6 22:34:29
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这是我在 UILabel 中显示链接的代码

import UIKit

类 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
}

}

enter image description here

你可以看到从这幅图,它显示链接正确我只是想要它,但不能通过单击链接跳转到 web 视图或其他。其实我需要自定义链接的 click 事件,和我真的也不知道︰

  1. 如何获取链接的 url。
  2. 如果有多个链接,需要做些什么。

感谢您首先检查这个问题。

解决方法 1:

正如路加福音说 UILabels 不支持的 URL。但是,您可以创建一个按钮,看起来像一个标签。 摆脱背景 (所以它看起来像文本) 和执行的功能到该按钮以打开 web 视图。 归因于的字符串可用于编辑的按钮中的文本样式。

你要想看看而不默认 uibutton 类使用自定义的类,当将按钮添加到您的 UI。

你将需要︰

  1. 初始化

     - (instancetype)initWithFrame:(CGRect)frame {
       self = [super initWithFrame:frame];
         if (self)
         {
             //call the method to configure the button
             [self configure];
         }
       return self;
     }
    
  2. 如果您使用的归因于的字符串,执行展现或 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 添加按钮并更改到您创建的自定义类的类。

官方微信
官方QQ群
31647020