oscarimonbox
6/14/2018 - 2:35 PM

UILabel clicable (como RTLabel)

Usar https://github.com/SteveBarnegren/AttributedStringBuilder

pod "AttributedStringBuilder"
1) EL COMPONENTE DEBE SER UN TEXTVIEW
quitar el Editable del componente y el Scrolling enabled

2)
extension to NSMutableAttributedString:

import Foundation

extension NSMutableAttributedString {

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

       let foundRange = self.mutableString.rangeOfString(textToFind)
       if foundRange.location != NSNotFound {
           self.addAttribute(NSLinkAttributeName, value: linkURL, range: foundRange)
           return true
       }
       return false
   }
}

3) En la VIEW, VIEWCONTROLLER

añadir el UITextViewDelegate


let first = String.init(format: "%@ | %@\n\n%@ | %@ | %@", "cookies".localized, "privacy_policy".localized,"legal_terms".localized, "cmmedia".localized, "contact".localized);
            
let attributedString = NSMutableAttributedString(string:first)
let _ = attributedString.setAsLink(textToFind: "cookies".localized, linkURL: "cookies")
let _ = attributedString.setAsLink(textToFind: "privacy_policy".localized, linkURL: "policy")
let _ = attributedString.setAsLink(textToFind: "legal_terms".localized, linkURL: "terms")
let _ = attributedString.setAsLink(textToFind: "cmmedia".localized, linkURL: "cmmedia")
let _ = attributedString.setAsLink(textToFind: "contact".localized, linkURL: "contact")
            
self.lblClicable.attributedText = attributedString;
self.lblClicable.isUserInteractionEnabled = true;
self.lblClicable.textColor = UIColor.white;
self.lblClicable.textAlignment = .center
            
self.lblClicable.delegate = self;

4) tratamiento del click

        func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool {
            
            NSLog(URL.absoluteString);
            return false;
        }