I\'ve been looking into a solution to getting clickable links working. I can get this working when using UITextView + NSAttributedString but it just doesn\'t autolayout prop
Aaron Brager is correct! I used to have the same problem, but I got it fixed in Swift by replacing the line:
label.attributedText = attributedString
with the line:
label.setText(attributedString)
This is accepted by the compiler because the setText method accepts AnyObject. I also increased the font of the attributed string of the link so it captures my tap and it is working now! I used this for the truncation link, this is the whole part:
label.lineBreakMode = .ByTruncatingHead
label.attributedTruncationToken = NSMutableAttributedString(string: "... Show more", attributes: [NSForegroundColorAttributeName: UIColor.cueCyan(), NSLinkAttributeName: readMoreLink, NSFontAttributeName: UIFont.formFont(.Light, size: fontSize+24)!])
label.userInteractionEnabled = true
label.delegate = self
The implementation of setAttributedText: doesn't update the linkModels
array, while the implementation of setText: does. I believe this is what causes your issue.
To resolve, set the label's text
property instead of the attributedText
property.
The docs also include this warning:
TTTAttributedLabel
can display both plain and attributed text: just pass anNSString
orNSAttributedString
to thesetText:
setter. Never assign to theattributedText
property.
The docs also show this example usage:
TTTAttributedLabel *attributedLabel = [[TTTAttributedLabel alloc] initWithFrame:CGRectZero];
NSAttributedString *attString = [[NSAttributedString alloc] initWithString:@"Tom Bombadil"
attributes:@{
(id)kCTForegroundColorAttributeName : (id)[UIColor redColor].CGColor,
NSFontAttributeName : [UIFont boldSystemFontOfSize:16],
NSKernAttributeName : [NSNull null],
(id)kTTTBackgroundFillColorAttributeName : (id)[UIColor greenColor].CGColor
}];
// The attributed string is directly set, without inheriting any other text
// properties of the label.
attributedLabel.text = attString;