Szukałem rozwiązania, które sprawiłoby, że klikalne linki działają. Mogę uzyskać to działa przy użyciu UITextView + NSAttributedString, ale po prostu nie jest autolayout poprawnie, gdy jest to UITableViewCell.Łącza TTTAttributedLabel są stylizowane, ale nie można klikać
Dodałem teraz TTTAttributedLabel do mojego projektu i idealnie pasuje do widoków. Łącza zmieniają kolor na niebieski i są podkreślone.
Jednak ich kliknięcie nic nie robi. Zrobiłem implementację TTTAttributedLabelDelegate na moim kontrolerze, utworzyłem etykietę w implementacji storyboardu MyLabel (która tylko rozszerza TTTAttributedLabel i ma opcje delegatów, ponieważ chcę, aby były uruchamiane wewnątrz tej samej funkcji). Na razie ustawiłem kontroler, aby był delegatem, o którym myślałem, że może nie działać, wskazując na siebie.
Ale żadna z tych funkcji nie zostanie zwolniona, mam w niej punkty przerwania i logi.
Zaimplementowałem program didSelectLinkWithUrl i didLongPressLinkWithUrl.
func attributedLabel(label: TTTAttributedLabel!, didSelectLinkWithURL url: NSURL!) {
Debug.log("link clicked")
}
func attributedLabel(label: TTTAttributedLabel!, didLongPressLinkWithURL url: NSURL!, atPoint point: CGPoint) {
Debug.log("link long clicked")
}
Outlet
@IBOutlet weak var content: MyLabel!
MyLabel
import UIKit import TTTAttributedLabel
class MyLabel : TTTAttributedLabel, TTTAttributedLabelDelegate {
override func didMoveToSuperview() {
if (self.delegate == nil) {
self.delegate = self
}
self.enabledTextCheckingTypes = NSTextCheckingType.Link.rawValue
self.userInteractionEnabled = true
}
func attributedLabel(label: TTTAttributedLabel!, didSelectLinkWithURL url: NSURL!) {
Debug.log("link clicked")
}
func attributedLabel(label: TTTAttributedLabel!, didLongPressLinkWithURL url: NSURL!, atPoint point: CGPoint) {
Debug.log("link long clicked")
}
ktoś wie co mogę brakować?
Aktualizacja
I okazało się, że po prostu wklejając w url f/e http://example.com staje się aktywna i jest rzeczywiście klikalne i didSelectLinkWithUrl staje klikalny, allthough muszę mieć nadany ciąg i jest oparta na sznurku HTML.
Swift 3/4: 'NSTextCheckingResult.CheckingType.link.rawValue' – aehlke