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
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.