嘿我正在使用UITextField来获取浮点值输入。我正面临一个困难,因为我想在运行时限制,用户可以输入到2位小数的值的精度。例如:
允许使用1.11,11.11,111.11,1111.11等值 和 像1.123,1.111,1.1111这样的值不是
如果不编写太多代码,我怎么能实现这一点。因此,基本上当小数点精度达到2时,用户不应该将其增加到3.输入字段应该停止在那里编辑。
答案 0 :(得分:2)
使用UITextFieldDelegate协议并实现
textField:shouldChangeCharactersInRange:replacementString:
每当输入一个字符时,都会调用此方法,因此在此方法中检查输入的字符是否为“。”然后允许在'。'之后输入两位数字。
从这个问题how to validate textfield that allows two digits after
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSArray *sep = [newString componentsSeparatedByString:@"."];
if([sep count]>=2)
{
NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
return !([sepStr length]>2);
}
return YES;
}
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以拥有一个会在之后递增的计数器。输入并且计数器大于2 =>返回号码:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if(string isEqualToString:@"." )
{
counter++;
}
if(counter>2)
{
return NO;
}
else
{
return YES;
}
}
使计数器成为全局变量。