目前我正在使用这种方法
(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
if(newLength <= 25) {
self.charsLeft.text = [NSString stringWithFormat:@"%d", 25 - newLength];
}
return (newLength > 25) ? NO : YES;
}
charsLeft
用户界面中显示的标签在哪里。
问题出现了emoji
。如果用户输入emoji
符号然后删除它,newLength
将等于 1。所以用户会看到他只剩下 24 个字符。
我知道表情符号是代理对,但我不明白为什么如果你删除它而range.length
不是
(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
将等于 1 而不是 2。
如何修复用户界面中的错误号码?我错过了什么?