一般在输入一些金额时需要保留两位小数,有些情况输入小数点位数过多 会出现其他问题 ,例如调用微信支付 小数点位数超过两位 就会调取失败
1 设置代理
textFile.delegate = self;
2 代理方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
//删除处理if ([string isEqualToString:@""]) {
return YES;
}
//首位不能为.号
if (range.location == 0 && [string isEqualToString:@"."]) {
return NO;
}
return [self isRightInPutOfString: textFile.text withInputString:string range:range];
}
- (BOOL)isRightInPutOfString:(NSString *) string withInputString:(NSString *) inputString range:(NSRange) range{
//判断只输出数字和.号
NSString *passWordRegex = @"[0-9\\.]";
NSPredicate *passWordPredicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",passWordRegex];
if (![passWordPredicate evaluateWithObject:inputString]) {
return NO;
}
//逻辑处理
if ([string containsString:@"."]) {
if ([inputString isEqualToString:@"."]) {
return NO;
}
NSRange subRange = [string rangeOfString:@"."];
if (range.location - subRange.location > 2) {
return NO;
}
}
return YES;
}