对于这种情况,我总是更喜欢正则表达式而不是基于代码的规则。
要限制一个小数点和一个小数点后一个字符,请使用以下;
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// Only allow one decimal point and 1 digit after it
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *expression = @"^[0-9]$*((\\.|,)[0-9]{0,1})?$";
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression options:NSRegularExpressionCaseInsensitive error:&error];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString options:0 range:NSMakeRange(0, [newString length])];
return numberOfMatches != 0;
return YES;
}
上面的代码将确保文本字段只包含一个小数点,并且在它之后只包含一个字符。
您可以使用此正则表达式并根据您的要求创建规则。