0

文字数を10進数の前に4文字、10進数の後に3文字に制限したUITextFieldがあります。私はこれをやりました

 - (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 に入力を開始するとすぐに、小数点が数値に自動的に追加されることです。2 番目の条件は、4 桁に達したら、次の桁は小数点以下にする必要があるということです。例えば:-

1 を入力した場合、1. のように見えるはずです。2 桁の場合は 11. これは 4 桁まで続く必要があり、5 桁目を入力するとすぐに、小数点以下の 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 に答える