UITextField设置精度

时间:2011-03-22 08:24:22

标签: iphone ios4

嘿我正在使用UITextField来获取浮点值输入。我正面临一个困难,因为我想在运行时限制,用户可以输入到2位小数的值的精度。例如:

允许使用1.11,11.11,111.11,1111.11等值 和 像1.123,1.111,1.1111这样的值不是

如果不编写太多代码,我怎么能实现这一点。因此,基本上当小数点精度达到2时,用户不应该将其增加到3.输入字段应该停止在那里编辑。

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;
}

}

使计数器成为全局变量。