我的问题是我必须这样做用户可以在范围内输入值...我的范围来自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;
}
答案 0 :(得分:1)
我认为只需检查文本域的length
即可。
当用户在文本字段中输入文本时,在条件的低端和高端放置一个条件。
见下面的代码:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField)
{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSData *data = [((MDCFlowDetails *)_flow).flow_data dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSInteger a = [[json objectForKey:@"startrange"] integerValue];
NSInteger b = [[json objectForKey:@"endrange"] integerValue];
if (newString.length > a && newString.length > b) {
// Check both range are satisfied.
return NO;
}
}
return YES;
}