设置文本字段的数值范围

时间:2013-07-18 09:28:13

标签: ios objective-c uitextfield

我有一个文本字段,必须只取一个特定范围的数值,例如m到n。我已经阅读了很多文章,但他们都只是说如何设置文本字段的最大长度。但我需要设置文本字段,使其仅取值范围,例如23到103.我设法确保文本字段仅通过将键盘类型设置为数字键盘来获取数值。有人请帮忙。

3 个答案:

答案 0 :(得分:4)

您可以在用户完成编辑文本字段时检查该值。

将textField的委托设置为视图控制器,然后:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    NSString *stringValue = textField.text;
    NSInteger integer = [stringValue intValue];
    if (integer <23 || integer > 103)
        // You can make the text red here for example
        return NO;
    else 
        return YES;
}

答案 1 :(得分:2)

您通常使用具有最小/最大可接受值的自定义数字格式化程序来实现此目的,如下所示:

NSNumberFormatter* formatter= [[NSNumberFormatter alloc]init];
formatter.numberStyle= NSNumberFormatterDecimalStyle;
formatter.allowsFloats= NO;
formatter.maximum= @103;
formatter.minimum= @23;

然后仅在格式化程序返回有效数字时允许用户返回:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{ 
    return [formatter numberFromString: textField.text]!= nil;
}

答案 2 :(得分:0)

试试这个。 如果要为特定文本字段设置范围。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{

if(textField == self.txtMobileNumber )
{
    if (textField.text.length >= 10 && range.length == 0)
        return NO;
}
}