Iphone UIKeyboardTypeDecimalPad检测是否有逗号“&引用;或“点”&引用;
如何检查UIKeyboardTypeDecimalPad是否有点/逗号?我需要这个来检查输入了多少点/逗号,这样我就可以将它们限制为1。当我知道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
-(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