0

在我的项目中,我将 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 实例化的视图。

不知道从这里去哪里。

4

2 回答 2

1

我用一个 TTTAttributedLabel 创建了一个全新的项目。在我连接委托方法后,一切都开始按预期工作,包括单击。我检查了标签上的手势识别器——结果发现它也没有点击识别器,只有长按识别​​器。

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

tap.cancelsTouchesInView = NO;

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

于 2016-11-01T08:58:26.420 回答
0

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

于 2016-10-12T10:37:01.430 回答