// textField代理方法
- (BOOL)textField:(UITextField*)textFieldshouldChangeCharactersInRange:(NSRange)rangereplacementString:(NSString*)string {
// string.length为0,表明没有输入字符,应该是正在删除,应该返回YES。
if(string.length==0) {
returnYES;
}
// length为当前输入框中的字符长度
NSUInteger length = textField.text.length+ string.length;
// 如果该页面中还有其他的输入框,则需要做这个判断
if(textField ==self.idNumberTextField) {
// str为当前输入框中的字符
NSString*str = [NSStringstringWithFormat:@"%@%@", textField.text,string];
// 当输入到17位数的时候,通过theLastIsX方法判断最后一位是不是X
if(length ==17&& [selftheLastIsX:str]) {
// 如果是17位,并通过前17位计算出18位为X,自动补全,并返回NO,禁止编辑。
textField.text= [NSStringstringWithFormat:@"%@%@X", textField.text,string];
returnNO;
}
// 如果是其他情况则直接返回小于等于18(最多输入18位)
returnlength <=18;
}
returnYES;
}
// 判断最后一个是不是X
- (BOOL)theLastIsX:(NSString*)IDNumber {
NSMutableArray*IDArray = [NSMutableArrayarray];
for(inti =0; i <17; i++) {
NSRange range = NSMakeRange(i,1);
NSString*subString = [IDNumbersubstringWithRange:range];
[IDArrayaddObject:subString];
}
NSArray*coefficientArray = [NSArrayarrayWithObjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2",nilnil];
intsum =0;
for(inti =0; i <17; i++) {
intcoefficient = [coefficientArray[i]intValue];
intID = [IDArray[i]intValue];
sum +=coefficient* ID;
}
if(sum %11==2)returnYES;
elsereturnNO;
}
网友评论