我有一个UITextField,其中我将字符数限制为小数点前4位,小数点后3位。我通过
完成了这项工作 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string{
if (textField == txt_weightKg)
{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range
withString:string];
NSString *expression = @"^([0-9]{1,4}+)?(\\.([0-9]{1,3})?)?$";
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:expression
options:NSRegularExpressionCaseInsensitive
error:nil];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
options:0
range:NSMakeRange(0,
[newString length])];
if (numberOfMatches == 0)
return NO;
}
return YES;
}
这只是为了保持验证,但现在我想要我真正想要的是,当我开始在UITextfield中输入时,小数会自动附加数字。第二个条件是当我达到4位数时,下一个数字应该在小数点后面。例如: -
如果我输入1,它应该看起来像1.,对于2位数字11.这必须继续最多4位数,然后一旦我输入第五位数字,它应该将小数点后的第5位数字放在1111.1这将小数点后继续到3位。
如果有人可以帮助我,那将非常感谢!如果有困惑,请随时询问。
答案 0 :(得分:1)
我认为我通过以下代码实现了您的要求:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//create character set containing numbers only
NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
if (textField.text.length >= 8 && range.length == 0)
{
return NO;
}
else
{
if ([string rangeOfCharacterFromSet:set].location != NSNotFound) {
return NO;
}
else
{
int length = [textField.text length];
//append a decimal after 4 digits
if([textField.text length] ==4 && string.length != 0)
{
textField.text = [NSString stringWithFormat:@"%@.",textField.text];
}
return YES;
}
}
}
请确认您对此的回复。