Iphone UIKeyboardTypeDecimalPad检测是否有逗号“&引用;或“点”&引用;

Iphone UIKeyboardTypeDecimalPad检测是否有逗号“&引用;或“点”&引用;,iphone,ios,xcode,uikeyboard,Iphone,Ios,Xcode,Uikeyboard,如何检查UIKeyboardTypeDecimalPad是否有点/逗号?我需要这个来检查输入了多少点/逗号,这样我就可以将它们限制为1。当我知道UIKeyboardTypeDecimalPad有逗号时,我知道如何做 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSCharacterSet

如何检查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;

}
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串{
NSCharacterSet*cs;
NSString*已过滤;
NSString*newString=[textField.text stringByReplacingCharactersInRange:range with string:string];
if([textField.text rangeOfString:@“,”].location==NSNotFound){
cs=[[NSCharacterSet characterSetWithCharactersInString:NUMBERSPERIOD]InversedSet];
筛选=[[string Components由字符分隔的集合:cs]Components由字符串连接:@”“];
返回[字符串isEqualToString:已筛选];
}
否则{
cs=[[NSCharacterSet characterSetWithCharactersInString:NUMBERS]反相器集];
筛选=[[string Components由字符分隔的集合:cs]Components由字符串连接:@”“];
NSU整数计数=0,长度=[newString length];
NSRange range=NSMakeRange(0,长度);
while(range.location!=NSNotFound)
{
range=[newString rangeOfString:@”,“选项:0范围:range];
if(range.location!=NSNotFound)
{
range=NSMakeRange(range.location+range.length,length-(range.location+range.length));
计数++;
}
}        
如果(计数<2){
NSArray*sep=[newString组件由字符串分隔:@“,”];
如果([sep计数]>=2)
{
NSString*sepStr=[NSString stringWithFormat:@“%@,[sep objectAtIndex:1]];
返回!([sepStr length]>2);
}
返回YES;
}
返回否;
}
}

有没有简单的方法检查键盘上是否有“,”或“.”?

我怀疑该键上的字符受当前区域设置的控制。我说我怀疑是因为我没有测试过这个。如果这是正确的,则以下内容应允许您确定是否存在逗号或句点/小数点:

NSString *symbol = [[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator];

谢谢你,先生,这正是我想要的!注意:从iOS 10开始,您可以使用[NSLocale currentLocale].decimalSeparator