菜鸟教程小白 发表于 2022-12-13 17:12:35

ios - 属性字符串上表情符号后的空格(IOS,Objective C)


                                            <p><p>所以我必须使用属性字符串为我的 UITextView.n 突出显示#tags 和@' 但是当我添加一个表情符号并在其后点击空格时,它充当一个制表符(4 个空格)。有谁知道确保正确识别空间并且在表情符号之后不会创建那么多空白的解决方案?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>当我遇到这个问题时,我正在解决一个非常相似的问题。这是我的解决方案。希望它对您的情况有所帮助。祝你好运!</p>

<pre><code>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
</code></pre>

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

<p>通过使用 <code>textView.attributedText</code> 初始化 <code>mutableAttributedText</code> 然后删除相关属性,我克服了这个错误,同时仍然能够向 <em>fresh</em 添加属性> <code>NSAttributedString</code>.</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 属性字符串上表情符号后的空格(IOS,Objective C),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/38049071/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/38049071/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 属性字符串上表情符号后的空格(IOS,Objective C)