0

テキストフィールドがある電卓アプリがあります。その後、正常に動作します。番号を入力しないと、アラートが表示されます。ユーザーが1.5を入力できるようにしたいのですが、これを行うと「数値を入力してください」というアラートが表示されます

では、10 進数を入力するにはどうすればよいでしょうか。私は次のコードを使用しています:

   NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];


  NSString*string=costToClientTextField.text;

 if ([string rangeOfCharacterFromSet:set].location != NSNotFound) {


 UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Only a number can be entered into this input field " delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alert show];
 [alert release];


 costToClientTextField.text=@"";


  }
4

2 に答える 2

0

「。」を追加します。あなたのセットで、そのように

  NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];
于 2012-06-20T06:05:18.100 に答える
0
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

    NSNumber* candidateNumber;

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

    range = NSMakeRange(0, [candidateString length]);

    [numberFormatter getObjectValue:&candidateNumber forString:candidateString range:&range error:nil];

    if (([candidateString length] > 0) && (candidateNumber == nil || range.length < [candidateString length])) {

        return NO;
    }
    else 
    {
        return YES;
    }
}

多分これはあなたを助けるでしょう。キーボードの種類の数字と句読点も入れてください。

于 2012-06-20T06:10:03.917 に答える