簡體   English   中英

使用Swift制作可點擊的UILabel

[英]Make Clickable UILabel Using Swift

我想使用Swift在UILabel文本中設置特定Word可單擊。

可能嗎?

如果此處有多個標簽,我如何檢測按下哪個單詞?

你不能用簡單的標簽。

github上有圖書館。

https://github.com/TTTAttributedLabel/TTTAttributedLabel

從這里你可以使用名為yourLabel.addLinkToURL()的方法

class ViewController: UIViewController , TTTAttributedLabelDelegate{

    @IBOutlet var lbl: TTTAttributedLabel!
    override func viewDidLoad() {
        super.viewDidLoad()

        var str : NSString = "Hello this is link"
        lbl.delegate = self
        lbl.text = str as String
        var range : NSRange = str.rangeOfString("link")
        lbl.addLinkToURL(NSURL(string: "http://github.com/mattt/")!, withRange: range)
    }

    func attributedLabel(label: TTTAttributedLabel!, didSelectLinkWithURL url: NSURL!) {
        UIApplication.sharedApplication().openURL(url)
    }
}

在此輸入圖像描述

SWIFT 3.0

    privacyLabel.delegate = self
    let strPolicy  : NSString = "Agree to the Terms & Conditions"
    privacyLabel.text = strPolicy as String
    let range1 : NSRange = strPolicy.range(of: "Terms & Conditions")
    privacyLabel.addLink(to: URL(string: "http://Terms.com")!, with: range1)



    func attributedLabel(_ label: TTTAttributedLabel!, didSelectLinkWith url: URL!) {

         print("url \(url)")
          // UIApplication.sharedApplication().openURL(url)
    }

我想分享我的圖書館https://github.com/psharanda/Atributika

它包含現代替代TTTAtributedLabel +強大的方法集來檢測和設置不同的東西,如標簽,主題標簽,提及等(一切都可以點擊)

一些代碼顯示它是如何工作的:

    let link = Style
        .font(.boldSystemFont(ofSize: 14))
        .foregroundColor(.black)
        .foregroundColor(.red, .highlighted)

    let tos = link.named("tos")
    let pp = link.named("pp")

    let all = Style
        .font(.systemFont(ofSize: 14))
        .foregroundColor(.gray)

    let text = "<tos>Terms of Service</tos> and <pp>Privacy Policy</pp>"
        .style(tags: tos, pp)
        .styleAll(all)

    let tosLabel = AttributedLabel()
    tosLabel.textAlignment = .center
    tosLabel.attributedText = text
    tosLabel.onClick = { label, detection in
        switch detection.type {
        case .tag(let tag):
            switch tag.name {
            case "pp":
                print("Privacy Policy clicked")
            case "tos":
                print("Terms of Service clicked")
            default:
                break
            }
        default:
            break
        }
    }

    view.addSubview(tosLabel)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM