4

ユーザーが小数点以下 2 桁のみを入力するように制限する必要があります。テキストフィールドのデリゲート shouldChangeCharactersInRange のコードに従って、これを実現しました。ただし、複数のドットを入力できます。これを制限するには?前もって感謝します。

            NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
            NSArray *sep = [newString componentsSeparatedByString:@"."];
            if([sep count]>=2)
            {
                NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
                NSLog(@"sepStr:%@",sepStr);

                return !([sepStr length]>2);
            }
            return YES;
4

6 に答える 6

3
 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

NSString *sepStr;

NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

NSArray *sep = [newString componentsSeparatedByString:@"."];
if([sep count]>=2)
   {
        sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
        NSLog(@"sepStr:%@",sepStr);
        if([sepStr length] >2)
       {
        return NO;
       }
    else 
       {
        return YES;
       }

   }
   return YES;
 }
于 2012-10-16T09:23:51.247 に答える
2

ドットが入力された場合は、ドットが既に存在するかどうかを確認し、存在する場合は NO を返す必要があります。

 NSString * newString = [textField.text stringByReplacingCharactersInRange: range withString: string];
 NSArray * sep = [newString componentsSeparatedByString: @"."];
 if([string isEqualToString:@"."] && [sep count] > 1){
    //already a . is  there.. so don't allow new one
    return NO;
 }
 if ([sep count] >= 2) {
     NSString * sepStr = [NSString stringWithFormat: @"%@", [sep objectAtIndex: 1]];
     NSLog(@"sepStr:%@", sepStr);

     return !([sepStr length] > 2);
 }
 return YES;
于 2012-10-16T09:16:57.110 に答える
0

この方法を使用できます:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
     NSRange temprange = [textField.text rangeOfString:@"."];
        if ((temprange.location != NSNotFound) && [string isEqualToString:@"."])
        {
            return NO;
        }
    return YES;
}
于 2013-02-08T05:09:11.057 に答える