天天看点

原生键盘9键输入身份证格式的bug

随手记

有一个需求,账号输入框,仅可输入身份证格式(0-9和xx),最长18位,不能限制键盘。没有第三方键盘,没有输入后校验,是在输入时候就限制输入。

用正则校验时,如图。

原生键盘9键输入身份证格式的bug

在全拼时候是没有问题的,但是在9键的情况,输入x时候,在进入ios13新的代理方法【- (void)textfielddidchangeselection:(uitextfield *)textfield api_available(ios(13.0), tvos(13.0));】中时,会把最后一位变成x。即输入完123456,点击输入x时,输入框内容会变成12345x。个人认为目前属于ios13的bug。目前解决方案,将输入的方法全部改造。待后期优化。

同时需要注意的是,在限制输入位数时,比如说限制18位,在外界复制一个20位的字符串,进入输入框粘贴,再在键盘上三指左滑(键盘撤销操作),会导致崩溃,需要做特殊处理。