TTTAttributedLabel自定义addLinkToURL无效

时间:2015-06-11 08:28:05

标签: ios objective-c tttattributedlabel

我使用api以格式返回超链接。

我使用正则表达式来获取标记之间的文本,以及href之间的文本来获取url。我想在标签之间显示文本并链接到href。中的网址。

我创建了这样的标签:

TTTAttributedLabel * attributedLabel = [[TTTAttributedLabel alloc] init];
[attributedLabel setFont:font];
[attributedLabel setTextColor:[UIColor colorFromHex:0x4b4b4b]];
[attributedLabel setLineBreakMode:NSLineBreakByWordWrapping];
[attributedLabel setNumberOfLines:0];

attributedLabel.userInteractionEnabled = YES;
[attributedLabel setEnabledTextCheckingTypes:NSTextCheckingTypeLink];
[attributedLabel setDelegate:delegate];

attributedLabel.linkAttributes = @{ (id)kCTForegroundColorAttributeName: [UIColor colorFromHex:0x0080be],
                                 (id)kCTUnderlineStyleAttributeName : [NSNumber numberWithInt:NSUnderlineStyleNone] };

[attributedLabel setText:string];

我设置了这样的网址和文字,我将为你节省正则表达式(网址设置在不同的函数中,因此,属性标签现在是标签):

NSString *replacementString = [label.text substringWithRange:[match rangeAtIndex:2]];
NSString *linkString = [label.text substringWithRange:[match rangeAtIndex:1]];
label.text = [label.text stringByReplacingCharactersInRange:[match rangeAtIndex:0] withString:replacementString];
NSRange replacementRange = NSMakeRange([match rangeAtIndex:0].location, [replacementString length]);
[label addLinkToURL:[NSURL URLWithString:linkString] withRange:replacementRange];

即使我记录[标签链接],我也会得到以下结果:

    (
    "<NSLinkCheckingResult: 0x7b9f2780>{454, 4}  {http://mysuperawesomesite.com}"
)

有谁知道我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

即使您将initWithFrame:作为框架传递,也必须使用CGRectZero指定的初始值设定项init。您在这里使用<dependency> <groupId>com.sun.xml.ws</groupId> <artifactId>jaxws-rt</artifactId> <version>2.1.7</version> <scope>provided</scope> </dependency> ,它不会初始化链接数组和各种其他内部属性。