在UITextField中键入时自动附加小数

时间:2013-04-16 10:47:50

标签: ios

我有一个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位。

如果有人可以帮助我,那将非常感谢!如果有困惑,请随时询问。

1 个答案:

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

}

请确认您对此的回复。