4

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

4

3 回答 3

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;
}
于 2013-07-18T09:34:58.210 回答
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;
}
于 2013-07-18T09:55:38.767 回答
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;
}
}
于 2013-10-07T11:44:59.187 回答