NSMutableAttributedString, чтобы узнать, где изменяется цвет в каком тексте

Я использую функцию тегов, такую ​​​​как facebook, и я уже могу пометить пользователя. Я могу показать так. Это делается этим кодом.

NSMutableAttributedString * string = [[NSMutableAttributedString alloc]initWithString:self.textView.text];

for (NSString *word in self.tagNameCollection) {
    [string addColor:[UIColor redColor] substring:word];
    [string addBackgroundColor:[Helpers getFromRGB:135 green:206 blue:250] substring:word];
}

Итак, у меня есть NSMutableAttributedString. Могу ли я узнать, где я изменил цвет, шрифт из моей NSMutableAttributedString? Могу ли я узнать, как это сделать?

введите здесь описание изображения


person Khant Thu Linn    schedule 02.03.2015    source источник
comment
Посмотрел enumerateAttributesInRange:options:usingBlock:   -  person Larme    schedule 02.03.2015


Ответы (1)


Вы можете использовать enumerateAttributesInRange:options:usingBlock:, чтобы получить атрибуты вашего NSAttributedString.

Пример:

[attributedString enumerateAttributesInRange:NSMakeRange(0, [attributedString length])
                                     options:0
                                  usingBlock:^(NSDictionary *attributes, NSRange range, BOOL *stop) {
if ([attributes objectForKey:NSForegroundColorAttributeName])
    NSLog(@"Found ForeGround Color: %@ in range %@", [attributes objectForKey:NSForegroundColorAttributeName], NSStringFromRange(range));
if ([attributes objectForKey:NSFontAttributeName])
    NSLog(@"Found Font: %@ in range %@", [attributes objectForKey:NSFontAttributeName], NSStringFromRange(range));
if ([attributes objectForKey:NSBackgroundColorAttributeName])
    NSLog(@"Found Background Color: %@ in range %@", [attributes objectForKey:NSBackgroundColorAttributeName], NSStringFromRange(range));

}];
person Larme    schedule 02.03.2015
comment
Спасибо. Кажется, все в порядке. Всегда ли мне нужно сохранять NSMutableAttributedString и обновлять, когда что-то изменяется в моем uitextview? Могу ли я получить NSMutableAttributedString из моего uitextview? Если я сделаю так, свойство NSMutableAttributedString исчезнет. NSMutableAttributedString *muStr = [[NSMutableAttributedString alloc]initWithString:self.inputToolBarViewInDetail.textView.text]; - person Khant Thu Linn; 02.03.2015
comment
Если вы хотите узнать об изменениях, вам, возможно, придется сохранить ссылку из предыдущей или, возможно, проверить метод UITextViewDelegate при изменении текста. - person Larme; 02.03.2015