gpt4 book ai didi

ios - 以编程方式标记 NSMutableAttributedString swift 4

转载 作者:行者123 更新时间:2023-11-30 11:25:21 24 4
gpt4 key购买 nike

我必须确保我可以单击“隐私”一词才能打开网络链接。我尝试了我发现的建议,但它们是旧东西,它们似乎不再起作用..我不知道如何解决问题

    private lazy var firstTermDescriptionLabel: UILabel = {
let label = UILabel(frame: .zero)
let firstTermsMessage = "I Agree to the License Terms and Privacy Policy"
var attributedString = NSMutableAttributedString.init(string: "Privacy")
attributedString.addAttribute(.link, value: "https://www.google.com/url?q=https://www.iubenda.com/privacy-policy/58446596&sa=D&source=hangouts&ust=1528787597335000&usg=AFQjCNEPkofPxSm7TDRMvxjOjCz5cio27w", range: NSRange(location: 0, length: 7))

label.isUserInteractionEnabled = true
label.text = firstTermsMessage
label.font = UIFont.systemFont(ofSize: 13, weight: .regular)
label.textAlignment = .left
label.numberOfLines = 0
label.translatesAutoresizingMaskIntoConstraints = false
label.heightAnchor.constraint(equalToConstant: 36).isActive = true
return label
}()

enter image description here

最佳答案

更新至 Swift 4

将此扩展添加到您的项目

extension NSMutableAttributedString {

public func setAsLink(textToFind:String, linkURL:String) -> Bool {

let foundRange = self.mutableString.range(of: textToFind)
if foundRange.location != NSNotFound {
// self.addAttribute(NSLinkAttributeName, value: linkURL, range: foundRange)
self.addAttributes([NSAttributedStringKey.link: URL(string: linkURL)!], range: foundRange)
return true
}
return false
}
}

更改您的喜欢如下:

let firstTermsMessage = "I Agree to the License Terms and Privacy Policy"
let attributedString = NSMutableAttributedString(string:firstTermsMessage)
let linkWasSet = attributedString.setAsLink(textToFind: "Privacy", linkURL: "https://www.google.com/url?q=https://www.iubenda.com/privacy-policy/58446596&sa=D&source=hangouts&ust=1528787597335000&usg=AFQjCNEPkofPxSm7TDRMvxjOjCz5cio27w")

if linkWasSet {
// adjust more attributedString properties
}
lableAtt.attributedText = attributedString
lableAtt.isUserInteractionEnabled = true
lableAtt.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTapOnLabel(_:))))


@objc func handleTapOnLabel(_ recognizer: UITapGestureRecognizer) {
guard let text = lableAtt.attributedText?.string else {
return
}

if let range = text.range(of:"terms") {
// goToTermsAndConditions()
} else if let range = text.range(of: "Privacy"){
print(range)
UIApplication.shared.open(URL(string: "https://www.google.com/url?q=https://www.iubenda.com/privacy-policy/58446596&sa=D&source=hangouts&ust=1528787597335000&usg=AFQjCNEPkofPxSm7TDRMvxjOjCz5cio27w")!, options: [:])
}
}

关于ios - 以编程方式标记 NSMutableAttributedString swift 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50793833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com