在我的项目中,我已将TTTAttributedLabel添加到IB中的视图,并添加了一个链接。
我在SO上看过类似的问题(比如this和this),但没有运气。
显示正确,链接按预期设置样式。但是当我尝试点击链接时,-(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实例化的。
不知道从哪里开始。
答案 0 :(得分:1)
我用一个TTTAttributedLabel创建了一个全新的项目。在我连接委托方法后,一切都开始按预期工作,包括单击。我已经检查了标签上的手势识别器 - 事实证明它没有水龙头识别器,只有长按一个。
之后我查看了原始项目,并找到了问题的根源。层次结构中的主视图具有另一个轻敲手势识别器,其拦截所有轻敲事件。我添加了这一行:
tap.cancelsTouchesInView = NO;
TTTAttributedLabel中的链接开始按预期工作。希望这个答案可以帮助有类似问题的人。
答案 1 :(得分:0)
您是否实施了(void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url;
协议的委托方法<TTTAttributedLabelDelegate>
?