2016-06-27 22 views
2

So habe ich zugeschrieben Zeichenfolge verwenden #tags zu haben und @ 's für meine UITextView.n hervorgehoben Aber wann immer ich hinzufügen, ein Emoji und traf Platz, nachdem sie, es fungiert als Tabulator (4 Leerzeichen). Kennt jemand eine Lösung, um sicherzustellen, dass der Raum korrekt erkannt wird und nicht so viel Leerraum nach Emoji erstellt?Raum nach Emojis auf zugeschrieben string (IOS, Objective C)

Antwort

1

Ich war ein sehr ähnliches Problem zu lösen, wenn ich dieses Problem auftreten. Hier ist meine Lösung. Hoffentlich hilft es in Ihrem Fall. Viel Glück!

let mutableAttributedText = NSMutableAttributedString(string: textView.text) 
let mutableAttributedText = NSMutableAttributedString(attributedString: textView.attributedText) 
mutableAttributedText.removeAttribute(NSForegroundColorAttributeName, range: NSRange(location: 0, length: mutableAttributedText.length)) 
… 
textView.attributedText = mutableAttributedText 

Ich war Initialisierung mutableAttributedText mit textView.text statt textView.attributedText da ich die bisherigen Attribute werfen wollte & mit einem frischen String beginnen auf einen UITextViewTextDidChangeNotification erhalten. Dies funktioniert für 1-Byte-UTF-8-Zeichen (d. H. ASCII-Zeichen), stellt jedoch ein Problem für Multi-Byte-UTF-8-Zeichen, insbesondere Emoji, dar. Dieser Fehler führte zu UITextView Rendern eines erweiterten Leerzeichen für jedes ” “ (Leerzeichen) Zeichen nach einem Emoji. Bemerkenswerterweise sieht der erweiterte Whitespace wie ein Tabulatorzeichen aus, aber der zugrunde liegende String behält den korrekten ” “ Charakter bei.

Durch die Initialisierung mutableAttributedText mit textView.attributedText dann den relevanten Attribute zu entfernen, überwand ich diesen Fehler während noch in der Lage Attribut zu einem frischenNSAttributedString hinzuzufügen.