Tapping URL doesn't work in TTTAttributedLabel while there is a UITapGestureRecognizer on its superview
use this gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch
for detection your event.
- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[TTTAttributedLabel class]])
{
return FALSE;
}
else
{
return TRUE;
}
}
you can also use if ([touch.view isKindOfClass:[UIControl class]])
for all UIControl e.g Button even detect with UIGestureRecognizer
. hope this help's you
I tried @Nitin's solution but it has a problem as @n00bProgrammer pointed out. Furthermore, user experience became very bad. I had to tap several times to fire tapGesture which is added on a superView.
Here you have a better solution. TTTAttributedLabel has a useful instance method like below.
- (BOOL)containslinkAtPoint:(CGPoint)point
This returns whether an NSTextCheckingResult is found at the given point.
So, use the following code snippet then only link added part of the text will be working as a tappable link and the rest of area will fire your tapGesture as you desired. User experience is excellent as well.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([yourTTTAttributedLabel containslinkAtPoint:[touch locationInView:yourTTTAttributedLabel]])
return FALSE;
else
return TRUE;
}
Set the cancelsTouchesInView
property of the gesture recognizer to NO.
gestureRecognizer.cancelsTouchesInView = NO;