2

UIKeyboardTypeDecimalPad にドット/コンマがあるかどうかを確認するにはどうすればよいですか? 入力されたドット/コンマの数を確認して、1 つだけに制限できるようにするためにこれが必要です。UIKeyboardTypeDecimalPad にコンマがあることがわかっている場合、これを行う方法を知っています。

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

NSCharacterSet *cs;
NSString *filtered;

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

if ([textField.text rangeOfString:@","].location == NSNotFound) {

    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERSPERIOD] invertedSet];
    filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    return [string isEqualToString:filtered];
 }


else {

    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS] invertedSet];
    filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];     

    NSUInteger count = 0, length = [newString length];
    NSRange range = NSMakeRange(0, length); 
    while(range.location != NSNotFound)
    {
        range = [newString rangeOfString: @"," options:0 range:range];
        if(range.location != NSNotFound)
        {
            range = NSMakeRange(range.location + range.length, length - (range.location + range.length));
            count++; 
        }
    }        

    if (count < 2) {

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

        return YES;

    }

    return NO;

}
}

キーボードに「,」または「.」があるかどうかを確認する簡単な方法はありますか?

4

1 に答える 1

7

そのキーの文字は現在のロケールによって管理されていると思います。私はこれをテストしていないので、私は疑うと言います。これが正しければ、以下により、コンマまたはピリオド/小数点が存在するかどうかを判断できます。

NSString *symbol = [[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator];
于 2012-07-25T19:55:14.627 に答える