Каков наилучший рабочий подход для использования подстроки в качестве гиперссылки?

Я использую TSLabel, Он работает действительно хорошо для iOS 10.2 и более ранних версий, но не работает в iOS 10.3. Я также пытался использовать TTTAttribuedLabel но по какой-то причине происходит сбой фреймворка в одном из методов. Прямо сейчас я застрял. Я не знаю, что именно я должен использовать. В TSLabel есть метод как

- (void) layoutManager: (NSLayoutManager *) layoutManager didCompleteLayoutForTextContainer: (NSTextContainer *) textContainer atEnd: (BOOL)layoutFinishedFlag {
// search for our custom label attribute - if we have it we'll tell it about link bounds!
TSLabel* label = [[self attribute: TSLabelAttributeName
                         atIndex: 0
                  effectiveRange: nil] object];

if ( label != nil && [label isKindOfClass: [TSLabel class]] )
{
    CGRect containerGlyphBounds = [layoutManager boundingRectForGlyphRange: [layoutManager glyphRangeForTextContainer: textContainer] inTextContainer: textContainer];

    // determine the bounds of each link and record that information with the TSLabel
    NSMutableSet* links = [NSMutableSet new];
    [self enumerateAttribute: TSLinkAttributeName
                     inRange: NSMakeRange(0, self.length)
                     options: 0
                  usingBlock: ^(NSURL* url, NSRange range, BOOL *stop) {

                      if ( url != nil )
                      {
                          TSLinkInfo* link = [TSLinkInfo new];
                          link.url = url;
                          link.range = range;

                          NSRange glyphRange = [layoutManager glyphRangeForCharacterRange: range actualCharacterRange: nil];
                          CGRect bounds = [layoutManager boundingRectForGlyphRange: glyphRange inTextContainer: textContainer];
                          link.bounds = CGRectOffset(bounds, 0, (label.bounds.size.height-containerGlyphBounds.size.height)/2);

                          [links addObject: link];
                      }
                  }];

    label.links = links;
}
}

Который не вызывается только в iOS 10.3 и в случае TTTAtributedLabel Фреймворк работает нормально, если я создаю новый проект и помещаю тот же код, который есть в моем проекте. это TTTAttributedLabel только вылетает в моем проекте. Вылетает в следующем методе:

- (NSArray *) links {
return [_linkModels valueForKey:@"result"];
}

LinkModels становится NSZombie,

0 ответов

Другие вопросы по тегам