0

我有一个 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小数点后的位。

如果有人可以帮助我,那将不胜感激!如有困惑,请随时询问。

4

1 回答 1

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

}

请确认您对此的回应。

于 2013-04-16T12:16:40.877 回答