天天看點

原生鍵盤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位的字元串,進入輸入框粘貼,再在鍵盤上三指左滑(鍵盤撤銷操作),會導緻崩潰,需要做特殊處理。