表情符号的UITextView字符限制计数不正确

时间:2016-08-05 01:51:53

标签: ios swift uitextview emoji

我的UITextView字符限制存在问题,其中计数为double,triple或quadruple计数表情符号。我希望表情符号算作1个字符,就像他们在Twitter iOS应用程序中所做的那样。这是我在shouldChangeTextInRange方法

中的代码
let characters = textView.text.characters.count + (text.characters.count - range.length)
        if characters <= self.characterLimit {
            // update character limit label as we type
            self.characterLimitLabel.text = String(characters) + "/" + String(self.characterLimit)
            return true
        } else {
            return false
        }

在考虑表情符号时,我应该改变什么才能产生正确的结果?

2 个答案:

答案 0 :(得分:0)

我认为这不是一个简单的解决方案......您必须检查unicode值以查看每个字符是否为表情符号。您将不得不对这些案例进行硬编码,然后每次发布新的表情符号时都必须更新它们。我的建议是你应该忘记表情符号花费更多的表情...如果你想要更多的信息,有一个github回购可以非常简单地检查表情符号......但是再一次,它可能会变得过时(如果还没有过时)。

https://github.com/woxtu/NSString-RemoveEmoji

答案 1 :(得分:0)

使用 NSString长度,而不是 String count

    let newString: NSString = currentString.replacingCharacters(in: range, with: text) as NSString
    let characters = newString.length
    if characters <= self.characterLimit {
        // update character limit label as we type
        self.characterLimitLabel.text = String(characters) + "/" + String(self.characterLimit)
        return true
    } else {
        return false
    }