NSAttributedString Farbe ändern, am Ende von string
Dies muss eine einfache Sache zu tun, aber ich kann nicht es herausfinden.
Ich habe eine NSMutableAttributedString hat, zum Beispiel, "Dies ist ein test" in ihm. Ich will Farbe das Wort "test" blau, was ich mit diesem:
NSMutableAttributedString *coloredText = [[NSMutableAttributedString alloc] initWithString:@"This is a test"];
[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(10,4)];
Das funktioniert gut. Aber ich will jetzt legen Sie die Textfarbe wieder auf schwarz für alles typisiert nach "test".
Wenn ich das Tue:
[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(coloredText.string.length, 1)];
Bekomme ich eine objectAtIndex:effectiveRange: out of bounds error. Vermutlich weil das Angebot erstreckt sich über die Länge der Zeichenfolge.
Wenn ich das Tue:
[coloredText addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(coloredText.string.length, 0)];
Der Fehler geht Weg, aber die Eingabe nach dem Wort "test" bleibt blau.
Wie ich die aktuelle Farbe an der Einfügemarke, wenn es am anderen Ende der Schnur??
Cheers für jede Eingabe.
- Sie können nicht geben Sie in einer
NSAttributedString
. Wenn Sie die Nutzung einesUITextField
oderUITextView
sollten Sie aktualisieren Sie Ihre Frage richtig. - Danke für den Kommentar, aber es scheint ein bisschen punctilious zu tun gegeben, dass, wie Sie sagten, Sie können nicht geben Sie in einem NSAttributedString, und dass die Steuerung präsentiert sich der string ist irrelevant für die Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie die Neuberechnung der Attribute, wenn der text ändert sich, da Ihre effektive Reichweite nicht automatisch mit verändern der Länge des Textes.
Falls jemand stößt auf diese wollte ich nach dem code, den ich verwendet, um das problem zu lösen. Ich landete mit Kamil ' s Vorschlag und fügt hinzu:
den text geändert hf.