I'm having problems setting up the TTTAttributedLabel within my project.
I have set the protocol delegate in my header file
@interface TwitterFeedControlleriPad : UIViewController <TTTAttributedLabelDelegate, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateWaterfallLayout>
I have set the ViewController to it (is not nil, I checked already).
cell.tweetLabel.delegate = self;
It's showing all the links right in the label but when I tap them it's not calling the function.
- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url
I've already used it before with success and it's exactly the same code!! It's driving me crazy!
Solved! The problem was the "User Interaction Enabled" Checkbox in the CollectionViewCell... It was disabled! it took me 4 hours to figured it out!! Thank you anyway!
The
UILabel
userInteractionEnabled
seems to be disabled by default, so unless you explicitly enable it, it won't work. That was my problem.One possible cause for the same problem (similar to Joeran's answer) is if you have a custom
UITapGestureRecognizer
on the view that keeps theTTTAttributedLabel
's tap gesture from being called. In my case I needed to block the tap gesture's action from being called if the tap was on a link, socancelsTouchesInView
was not enough.My solution: blocking the tap gesture from being recognized at all.
In
viewDidLoad
:And below the actual implementation of my class:
I understand it is not your case, but this is for everyone who have the same problem as I had and stumble on this thread.
I had an
UITapGestureRecognizer
on the same view as theTTTAttributedLabel
. Because of the first one, the 'touchEnded
' function of theTTTAttributedLabel
wasn't called, which is responsible for handling clicked links.I solved the problem by adding the line:
tapGestureRecognizer.cancelsTouchesInView = NO;