2015-08-14 13 views
9

Chcę ustawić konkretne słowo klikalne w UILabel tekstu za pomocą Swift.Dodać do kliknięcia UILabel Używając Swift

Czy to możliwe?

Jeśli jest więcej niż jedna etykieta, w jaki sposób mogę wykryć, które słowo zostało naciśnięte?

+1

dodaj gest dotknięcia do etykiety, możesz to zrobić za pomocą akcji. –

Odpowiedz

18

Nie można zrobić za pomocą prostej etykiety.

W githubie dostępna jest biblioteka.

https://github.com/TTTAttributedLabel/TTTAttributedLabel

Od tego można użyć metody nazywane 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) 
    } 
} 

enter image description here

+0

@ Daij-Djan Ok, proszę pana. czy możesz opublikować jako odpowiedź? Tak więc pytający dostanie poprawny wynik i odpowiedź. –

+0

Próbuję. Nie zrobiłem tego :) Zerknę na to od razu –

+0

Uważam, że najprostszym rozwiązaniem jest użycie 1-2 etykiet i przycisku. Autolayout czyni to naprawdę łatwym. – Sulthan

1

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) 
    } 
0

Chciałbym podziel moja biblioteka https://github.com/psharanda/Atributika

Zawiera nowoczesną wymianę TTTAtributedLabel + potężny zestaw metod do wykrywania i styl różnych rzeczy, takich jak znaczniki, hashtags wspomina itp (wszystko o które mogą być klikalne)

Niektóre kod, aby pokazać jak to działa:

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) 
Powiązane problemy