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?
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?
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)
}
}
@ Daij-Djan Ok, proszę pana. czy możesz opublikować jako odpowiedź? Tak więc pytający dostanie poprawny wynik i odpowiedź. –
Próbuję. Nie zrobiłem tego :) Zerknę na to od razu –
Uważam, że najprostszym rozwiązaniem jest użycie 1-2 etykiet i przycisku. Autolayout czyni to naprawdę łatwym. – Sulthan
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)
}
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)
dodaj gest dotknięcia do etykiety, możesz to zrobić za pomocą akcji. –