做項(xiàng)目的時(shí)候,使用UITextField的時(shí)候,需求是需要輸入18位的身份證號(hào),不能多輸入。經(jīng)過(guò)一頓操作,結(jié)果發(fā)現(xiàn)并不是那么麻煩,只要在UITextFieldDelegate的代理方法中添加range.location的判斷即可。具體的操作如下,tag值是用來(lái)判斷是哪個(gè)textField的,可以無(wú)視。
根據(jù)需求,代碼如下:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag == 1000) {
//控制字?jǐn)?shù)限制在18位,多余位數(shù)無(wú)法輸入
if (range.location >= 18)
{
if ([string isEqualToString:@"\n"])
{
[textField resignFirstResponder];
return NO;
}
return NO;
}
}
if ([string isEqualToString:@"\n"])
{
[textField resignFirstResponder];
return NO;
}
return YES;
}
代碼截圖如下:
824943E1-AA48-4B7A-AAC5-F9B4C27C83F6.png