OGeek|极客世界-中国程序员成长平台

标题: ios - 属性字符串上表情符号后的空格(IOS,Objective C) [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 17:12
标题: ios - 属性字符串上表情符号后的空格(IOS,Objective C)

所以我必须使用属性字符串为我的 UITextView.n 突出显示#tags 和@' 但是当我添加一个表情符号并在其后点击空格时,它充当一个制表符(4 个空格)。有谁知道确保正确识别空间并且在表情符号之后不会创建那么多空白的解决方案?



Best Answer-推荐答案


当我遇到这个问题时,我正在解决一个非常相似的问题。这是我的解决方案。希望它对您的情况有所帮助。祝你好运!

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

我用 textView.text 而不是 textView.attributedText 初始化 mutableAttributedText 因为我想丢弃以前的属性并从收到 UITextViewTextDidChangeNotification 后的新 String。这适用于 1 字节 UTF-8 字符(即 ASCII 字符),但对于多字节 UTF-8 字符,特别是表情符号会造成问题。此错误导致 UITextView 为每个尾随 emoji 的 ” “ (空格)字符呈现扩展的空白。值得注意的是,扩展的空白看起来像一个制表符,但底层的 String 保持了正确的 ” “ 字符。

通过使用 textView.attributedText 初始化 mutableAttributedText 然后删除相关属性,我克服了这个错误,同时仍然能够向 fresh NSAttributedString.

关于ios - 属性字符串上表情符号后的空格(IOS,Objective C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38049071/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) Powered by Discuz! X3.4