TTTAttributedLabel链接已设置样式并具有UILongPressGestureRecognizer,但没有UITapGestureRecognizer

时间:2016-10-12 09:17:33

标签: ios uigesturerecognizer tttattributedlabel

在我的项目中,我已将TTTAttributedLabel添加到IB中的视图,并添加了一个链接。

我在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实例化的。

不知道从哪里开始。

2 个答案:

答案 0 :(得分:1)

我用一个TTTAttributedLabel创建了一个全新的项目。在我连接委托方法后,一切都开始按预期工作,包括单击。我已经检查了标签上的手势识别器 - 事实证明它没有水龙头识别器,只有长按一个。

之后我查看了原始项目,并找到了问题的根源。层次结构中的主视图具有另一个轻敲手势识别器,其拦截所有轻敲事件。我添加了这一行:

tap.cancelsTouchesInView = NO;

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

答案 1 :(得分:0)

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