NIAttributedLabel - 支持链接,同时保持控制分接功能

时间:2013-01-05 18:26:57

标签: iphone objective-c ios uilabel

我正在尝试使用NIAttributedLabel生成一个既包含文字,也包含文字,链接并支持此行为的标签:

  • 按一个链接会调用- (void)attributedLabel:(NIAttributedLabel *)attributedLabel didSelectTextCheckingResult:(NSTextCheckingResult *)result atPoint:(CGPoint)point; - 这样可以正常工作。
  • 按其他任何地方都会调用另一种方法 - 如果已实施,则上述链接功能将丢失。

我不必使用NIAttributedLabel所以建议更好的控制也可以。

感谢您的帮助

1 个答案:

答案 0 :(得分: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中的所有[超级触控XXXX]功能;

  3. 然后,它有效!