2016-10-12 34 views
0

在我的项目中,我已将TTTAttributedLabel添加到IB的视图中并添加了一个链接。TTTAttributedLabel链接样式化并具有UILongPressGestureRecognizer,但没有UITapGestureRecognizer

我已经看过类似的问题上SO(如thisthis),但没有运气。

它显示正常,链接样式按预期。但是当我尝试点击链接时,-(void)attributedLabel:didSelectLinkWithURL:未被调用。但如果我使用长按-(void)attributedLabel:didLongPressLinkWithURL:atPoint:而不是按预期发射。所以我相信这个代表正在工作。这似乎是标签甚至没有一个tapGestureRecognizer

(lldb) po label.gestureRecognizers 
<__NSSingleObjectArrayI 0x60800000ee60>(
<UILongPressGestureRecognizer: 0x7f88f6c5d480; state = Began; view = <TTTAttributedLabel 0x7f88f6f8ada0>; target= <(action=longPressGestureDidFire:, target=<TTTAttributedLabel 0x7f88f6f8ada0>)>> 
) 

下面的代码:

RFStaticAttributedLabelFormView *labelView = [RFStaticAttributedLabelFormView new]; 
labelView.staticLabel.userInteractionEnabled = YES; 
labelView.staticLabel.delegate = self; 
NSString *text = RFLocalized(@"TXT_FINES_SEARCH_FNS"); 
[labelView.staticLabel setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:nil]; 
NSRange r = [text rangeOfString:RFLocalized(@"TXT_FINES_SEARCH_FNS_LINK")]; 
[labelView.staticLabel addLinkToURL:[NSURL URLWithString:@"http://www.google.com"] withRange:r]; 

RFStaticAttributedLabelFormView是一个观点,那就是从XIB实例化。

不知道该从哪里出发。

回答

1

我用一个TTTAttributedLabel创建了一个新的新项目。在我完成代表方法之后,所有事情都开始按预期工作,包括一次点击。我已经检查过标签上的手势识别器 - 事实证明,它没有自来水识别器,只有长按一个。

之后,我回顾了我的原始项目,并找到了问题的根源。层次结构中的主视图有另一个窃听所有轻击事件的轻击手势识别器。我已添加此行:

tap.cancelsTouchesInView = NO; 

TTTAttributedLabel中的链接已开始正常工作。希望这个答案可以帮助有类似问题的人。

0

您是否实施了委托方法 - (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url;<TTTAttributedLabelDelegate>协议?

+0

是的,当然。我在那里添加了一条日志消息,所以我确定它没有被调用。 – NKorotkov