建议将这个方法封装成为一个公共的方法, 用的时候在uiTextField的代理方法里面直接调用
直接上代码
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NumbersWithDot]invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
if (filtered.length == 0) {
//支持删除键
return [string isEqualToString:@""];
}
if (textField.text.length == 0) {
return ![string isEqualToString:@"."];
}
//第一位为0,只能输入.
else if (textField.text.length == 1){
if ([textField.text isEqualToString:@"0"]) {
return [string isEqualToString:@"."];
}
}
else{//只能输入一个.
if ([textField.text rangeOfString:@"."].length) {
if ([string isEqualToString:@"."]) {
return NO;
}
//两位小数
NSArray *ary = [textField.text componentsSeparatedByString:@"."];
if (ary.count == 2) {
if ([ary[1] length] == 2) {
return NO;
}
}
}
}
return YES;
还有一点, 刚输入的最后一个字符是'.'的时候, 最好在输入完成的那个代理方法里面, 加上这个方法
if (textField.text.length > 0) {
NSMutableString *string = [NSMutableString stringWithString:textField.text];
if ([string characterAtIndex:0] == '.' || [string characterAtIndex:textField.text.length - 1] == '.') {
[MBProgressHUD showError:@"请输入正确的金额"];
textField.text = @"";
}
}
亲自尝试, 可以将uitextField子类化, 用的话直接用就可以了
网友评论