0

我有一个计算器应用程序,其中有一个文本字段,如果我在其中输入任何数字;然后它工作正常。如果我不输入数字,则会显示警报。我也希望用户能够输入 1.5,但是当我这样做时,它会显示警报“请输入数字”

那么如何输入十进制数呢?我正在使用以下代码:

   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 回答