2

NIAttributedLabelテキスト、リンクの両方を持ち、この動作をサポートするラベルを作成するために使用しようとしています:

  • リンクを押すと電話がかかります- (void)attributedLabel:(NIAttributedLabel *)attributedLabel didSelectTextCheckingResult:(NSTextCheckingResult *)result atPoint:(CGPoint)point;- これはうまくいきます。
  • それ以外の場所を押すと、別のメソッドが呼び出されます。実装されている場合、上記のリンク機能は失われます。

使用する必要はないNIAttributedLabelので、より良いコントロールの提案も機能します。

ご協力ありがとうございました

4

1 に答える 1

0

私はついにこれを理解しました。

  1. 関数をファイル NIAttributedLabel.m に追加する

    -(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
         // never return self. always return the result of [super hitTest..].
         // this takes userInteraction state, enabled, alpha values etc. into account
         UIView *hitResult = [super hitTest:point withEvent:event];
    
         // don't check for links if the event was handled by one of the subviews
         if (hitResult != self) {
             return hitResult;
         }
    
         if (self.explicitLinkLocations || self.detectedlinkLocations) {
             BOOL didHitLink = ([self linkAtPoint:point] != nil);
             if (!didHitLink) {
                 // not catch the touch if it didn't hit a link
                 return nil;
             }
         }
         return hitResult;
    }
    
  2. すべての touchXXX のすべての [super touch XXXX] 機能を削除します。

その後、それは動作します!

于 2013-07-04T15:31:55.310 に答える