TTTAttributedLabel: нажатие на ссылку. [NSConcreteAttributedString reverseObjectEnumerator]: нераспознанный селектор, отправленный экземпляру 0x8eb7f60'

Работа над приложением чата. Использование TTTAttributedLabel в моей пользовательской ячейке. Так что я могу обнаружить ссылки. Я реализовал этот код в своей пользовательской ячейке.

    self.tttAttributedLabel=[[TTTAttributedLabel alloc] init];
    self.tttAttributedLabel.font = [UIFont systemFontOfSize:14.0];
    self.tttAttributedLabel.numberOfLines = 0;
    self.tttAttributedLabel.lineBreakMode = NSLineBreakByWordWrapping;
    self.tttAttributedLabel.linkAttributes = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:(__bridge NSString *)kCTUnderlineStyleAttributeName];
    self.tttAttributedLabel.enabledTextCheckingTypes = NSTextCheckingTypeLink; 
    self.tttAttributedLabel.delegate = self;
    [self.contentView addSubview:self.tttAttributedLabel];

я получаю сбой в ниже функции. Я не знаю, почему происходит сбой. похоже, что self.links не является допустимым массивом.

  - (NSTextCheckingResult *)linkAtCharacterIndex:(CFIndex)idx
{
     NSEnumerator *enumerator = [self.links reverseObjectEnumerator]; //crash on this 
   NSTextCheckingResult *result = nil;
   while ((result = [enumerator nextObject])) {
    if (NSLocationInRange((NSUInteger)idx, result.range)) {
        return result;
    }
}
return nil;
}

чат

1 ответ

Вы должны использовать назначенный инициализатор, initWithFrame:, даже если вы проходите в CGRectZero как кадр. Ты используешь init, который не будет выполнять общий метод инициализации, который инициализирует links имущество.

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