3

是否可以检测CGRect链接文本或CGPoint位置,以显示点击链接的弹出框(在 ipad 上)TTTAttributedLabel?我需要在单击的链接上显示弹出框TTTAttributedLabel

谢谢!

4

2 回答 2

2

您只能通过修改 TTTAttributedLabel 来支持此行为来做到这一点。

1)修改委托方法:

- (void)attributedLabel:(TTTAttributedLabel *)label
   didSelectLinkWithURL:(NSURL *)url
                atPoint:(CGPoint)point;

2) 在TTTAttributedLabel.m源代码中,修改touchesEnded:withEvent:并抓取触摸点并将其传递给委托方法。

    switch (result.resultType) {
        case NSTextCheckingTypeLink:
            if ([self.delegate respondsToSelector:@selector(attributedLabel:didSelectLinkWithURL:atPoint:)]) {
                UITouch *touch = [touches anyObject];
                CGPoint touchPoint = [touch locationInView:self];
                [self.delegate attributedLabel:self didSelectLinkWithURL:result.URL atPoint:touchPoint];
                return;

3) 在视图控制器中,您需要将该触摸点转换为与视图控制器视图的相对坐标:

#pragma mark TTTAttributedLabelDelegate
- (void)attributedLabel:(TTTAttributedLabel *)label
   didSelectLinkWithURL:(NSURL *)url 
                atPoint:(CGPoint)point
{
        CGPoint normalizedPoint = [self convertPoint:point fromView:label];        

        UIActionSheet *actionSheet = [[UIActionSheet alloc] ...
        [actionSheet showFromRect:CGRectMake(normalizedPoint.x, normalizedPoint.y-kSensibleOffset, 10, 10)
                           inView:label
                         animated:YES];
    }
#pragma mark -
于 2013-04-26T18:15:11.210 回答
-2

您不想通过尝试跟踪位置来在手势级别执行此操作。既然你有一个链接,openURL当你拦截链接点击时,只需覆盖并做任何你想做的事情。更多细节在这里

于 2012-12-24T23:11:45.907 回答