Objective c UITextView中的NSMutableAttributedString追加

Objective c UITextView中的NSMutableAttributedString追加,objective-c,nsmutableattributedstring,Objective C,Nsmutableattributedstring,当用户选择与示例类似的不同单词时,我需要为UITextview追加2个NSMutableAttributedString 字符串=@“blabla1 bla2 bla3” 用户第一次选择@“blabla1” 文本看起来像“blabla1bla2 bla3” 选择@“blabla3”后,我想在UITextview中得到的结果是@“blabla1blabla2blabla3” 现在我得到的结果是“blabla1blabla2 bla3 bla1 bla2bla3” 我的代码是: -(NSMutabl

当用户选择与示例类似的不同单词时,我需要为UITextview追加2个NSMutableAttributedString

字符串=@“blabla1 bla2 bla3”

用户第一次选择@“blabla1”

文本看起来像“blabla1bla2 bla3”

选择@“blabla3”后,我想在UITextview中得到的结果是@“blabla1blabla2blabla3

现在我得到的结果是“blabla1blabla2 bla3 bla1 bla2bla3

我的代码是:

-(NSMutableAttributedString*)getNSMutableAttributedString:(NSString*)string withRange:(NSRange)range withTextView:(UITextView*)textView
{
if (!str)
{
    str = [[NSMutableAttributedString alloc] initWithString:string];
    UIFont *font = [UIFont boldSystemFontOfSize:16];
    [str addAttribute:NSFontAttributeName value:font range:NSMakeRange(range.location, range.length)];

}
else
{
    NSMutableAttributedString *mutableAttString = [[NSMutableAttributedString alloc] initWithString:string];

    UIFont *font = [UIFont boldSystemFontOfSize:16];
    [mutableAttString addAttribute:NSFontAttributeName value:font range:NSMakeRange(range.location, range.length)];

    NSMutableAttributedString *first = str;
    NSMutableAttributedString *second = mutableAttString;

    NSMutableAttributedString* result = [first mutableCopy];
    [result appendAttributedString:second];

    str = result;

}

return str;
}

您应该做的是从
UITextView
获取
str
(现有的
attributedText
),然后向特定范围添加属性

str = [textView attributedText];
UIFont *font = [UIFont boldSystemFontOfSize:16];
[str addAttribute:NSFontAttributeName value:font range:NSMakeRange(range.location, range.length)];

return str;

您要做的是创建一个具有相同内容但不同属性的新属性字符串,然后附加到现有AttributeText。这就是为什么您会看到文本重复两次。

属性可以多次添加到一个字符串中。您可以从没有属性的字符串创建一个新的attributedString。 结果您收到@“blabla1blabla2 bla3 bla1 bla2bla3


您是只想加粗某些部分,还是想附加?你的“我需要”和“我得到”不清楚。总是有3个词吗?不,这是一个免费的文字视图
-(NSMutableAttributedString*)getNSMutableAttributedString:(NSMutableAttributedString*)string withRange:(NSRange)range withTextView:(UITextView*)textView
{
if (!str)
 {
    str = [[NSMutableAttributedString alloc] initWithAttributedString:string];
    UIFont *font = [UIFont boldSystemFontOfSize:16];
    [str addAttribute:NSFontAttributeName value:font range:NSMakeRange(range.location, range.length)];
 }
else
  {
    UIFont *font = [UIFont boldSystemFontOfSize:16];
    [str addAttribute:NSFontAttributeName value:font range:NSMakeRange(range.location, range.length)];
  }
return str;
}