NSAttributedString zmienia kolor na końcu łańcucha

To musi być łatwa rzecz, ale nie mogę tego zrozumieć.

Mam NSMutableAttributedString, który ma na przykład „To jest test”. Chcę pokolorować słowo „test” na niebiesko, co robię z tym:

NSMutableAttributedString *coloredText = [[NSMutableAttributedString alloc] initWithString:@"This is a test"];

[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(10,4)];

To działa dobrze. Ale teraz chcę ustawić kolor tekstu z powrotem na czarny dla czegokolwiek wpisanego po „teście”.

Jeśli zrobię:

[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(coloredText.string.length, 1)];

Dostaję objectAtIndex: efficientRange: błąd poza granicami. Zakładając, że zasięg rozciąga się poza długość łańcucha.

Jeśli zrobię:

[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(coloredText.string.length, 0)];

Błąd zniknie, ale wpisanie po słowie „test” pozostanie niebieskie.

Jak ustawić bieżący kolor w punkcie wstawiania, gdy znajduje się on na końcu łańcucha?

Pozdrawiam za każde wejście.

questionAnswers(2)

yourAnswerToTheQuestion