UITextField昵称字节限制删除无效问题修复

昵称输入框的字节限制其实挺常见,是在支持多语言、要兼容表情的 App 里更容易踩坑。用 iOS 的 UITextField 做昵称限制时,如果你只按字符数来算,容易出现删除不响应、长度不准的问题,尤其汉字和字母混输时更麻烦。

比较靠谱的做法是按字节来限制,比如 10 个汉字或 30 个英文字符,先把输入内容转成 UTF-8,再统计字节长度。在 shouldChangeCharactersInRange 方法里实时校验就挺合适。

不过最容易忽略的点就是“删除无效”这事儿。有时候用户删了几个字看起来长度变短了,但因为字节计算没同步,实际还是超了。方法简单:每次输入和删除时都重新计算总字节,并及时更新提示或状态。

顺带一提,如果你懒得从头实现,可以参考UITextField 字符长度输入限制优化这篇文章,里面讲得挺细的,封装也比较合理,直接拿来用都行。

还有别忘了写点单元测试,是中英文混输、边界值那些,踩过坑才知道哪里容易出错。如果你也遇到“删不掉”问题,那这套方式可以试试看,效果还不错。

zip 文件大小:61.07KB