我的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
}
在考虑表情符号时,我应该改变什么才能产生正确的结果?
答案 0 :(得分:0)
我认为这不是一个简单的解决方案......您必须检查unicode值以查看每个字符是否为表情符号。您将不得不对这些案例进行硬编码,然后每次发布新的表情符号时都必须更新它们。我的建议是你应该忘记表情符号花费更多的表情...如果你想要更多的信息,有一个github回购可以非常简单地检查表情符号......但是再一次,它可能会变得过时(如果还没有过时)。
答案 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
}