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 に答える