0

我正在使用TTTAttributedLabel制作UILabel超链接,我正在尝试按以下方式执行此操作:

 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];

这显示得很好,但是当我点击使用条款时,

TTTAtributedLabel 在它的 - (NSArray *) links 方法中崩溃,它变成了一个僵尸对象。

我不知道我到底错过了什么。

提前致谢。

4

1 回答 1

0

你好,我把你的代码放在我的示例应用程序中它工作正常只需添加委托方法,你的代码工作正常

- (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];
}
于 2017-04-24T09:28:07.653 回答