1

我的问题是我必须像用户可以在 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;
}
4

1 回答 1

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;
}
于 2014-12-05T11:47:02.423 回答