做项目的时候,使用UITextField的时候,需求是需要输入18位的身份证号,不能多输入。经过一顿操作,结果发现并不是那么麻烦,只要在UITextFieldDelegate的代理方法中添加range.location的判断即可。具体的操作如下,tag值是用来判断是哪个textField的,可以无视。
根据需求,代码如下:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag == 1000) {
//控制字数限制在18位,多余位数无法输入
if (range.location >= 18)
{
if ([string isEqualToString:@"\n"])
{
[textField resignFirstResponder];
return NO;
}
return NO;
}
}
if ([string isEqualToString:@"\n"])
{
[textField resignFirstResponder];
return NO;
}
return YES;
}
代码截图如下: