【发布时间】:2014-12-05 11:05:42
【问题描述】:
我的问题是我必须像用户可以在 Range 中输入值一样...我的范围来自 json
这是我尝试过的代码...这里 a,b 是我的起始范围,b 是结束范围用户可以更好地输入值而不超出范围
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField)
{
NSData *data = [((MDCFlowDetails *)_flow).flow_data dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSString *a = [json objectForKey:@"startrange"];
NSString *b = [json objectForKey:@"endrange"];
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *expression = @"^([0-9]+)?(\\.([0-9]{1,2})?)?$";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression
options:NSRegularExpressionCaseInsensitive
error:nil];
NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
options:0
range:NSMakeRange(0, [newString length])];
if (numberOfMatches == 0)
return NO;
}
return YES;
}
【问题讨论】:
-
“startRange”和“endRange”到底是什么?是这些话吗?数字?咖啡机的索引?这些变量从未在代码中使用。我所看到的只是一个正则表达式(我不明白)。您必须添加更多信息。
-
@MatthiasBauch startRange 和 endRange 是数字
-
所以你的范围是最大和最小 newString 长度?
-
@Mateusz 是最小和最大长度
-
很抱歉提出问题,但是有什么理由使用正则表达式进行这种类型的验证吗?为什么不只取起始范围和结束范围值的 ascii 并进行验证?
标签: ios objective-c ios8 uitextfield nscharacterset