0

I am using TTTAttributedLabel to make UILabel hyperlink, I am trying to do this as below:

 NSAttributedString *attString = [[NSAttributedString alloc] initWithString:@"By tapping you agree to the Terms of Use and Privacy Policy."
                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.
self.tttTermAndCondition.text = attString;
self.tttTermAndCondition.delegate = self; // Delegate methods are called when the user taps on a link (see `TTTAttributedLabelDelegate` protocol)

//self.tttTermAndCondition.text = @"Fork me on GitHub! (http://github.com/mattt/TTTAttributedLabel/)"; // Repository URL will be automatically detected and linked
self.tttTermAndCondition.enabledTextCheckingTypes = NSTextCheckingTypeLink;
NSRange range = [self.tttTermAndCondition.text rangeOfString:@"Terms of Use"];
[self.tttTermAndCondition addLinkToURL:[NSURL URLWithString:@"http://github.com/mattt/"] withRange:range];

This shows perfectly fine but when i click the Term Of Use,

The TTTAtributedLabel crashes in its - (NSArray *) links method, It becomes a zombie object.

I dont know what exactly i am missing.

Thanks In Advance.

NAVEEN KUMAR
  • 669
  • 6
  • 25
Uzair Dhada
  • 333
  • 2
  • 6
  • 23

1 Answers1

0

hello i put your code in my sample application its work fine just add the delegate method and your code work fine

- (void)viewDidLoad {
[super viewDidLoad];
tttTermAndCondition = [[TTTAttributedLabel alloc]initWithFrame:CGRectMake(0, 50, 320, 200)];
NSAttributedString *attString = [[NSAttributedString alloc] initWithString:@"By tapping you agree to the Terms of Use and Privacy Policy."
                                                                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.
tttTermAndCondition.text = attString;
tttTermAndCondition.delegate = self; // Delegate methods are called when the user taps on a link (see `TTTAttributedLabelDelegate` protocol)

//self.tttTermAndCondition.text = @"Fork me on GitHub! (http://github.com/mattt/TTTAttributedLabel/)"; // Repository URL will be automatically detected and linked
tttTermAndCondition.enabledTextCheckingTypes = NSTextCheckingTypeLink;
NSRange range = [tttTermAndCondition.text rangeOfString:@"Terms of Use"];
[tttTermAndCondition addLinkToURL:[NSURL URLWithString:@"http://github.com/mattt/"] withRange:range];
//self.se
[self.view addSubview:tttTermAndCondition];
// Do any additional setup after loading the view, typically from a nib.
}


-(void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url
{
    [[UIApplication sharedApplication] openURL:url options:nil completionHandler:nil];
}
Bhupat Bheda
  • 1,968
  • 1
  • 8
  • 13