Ios 设置文本字段的数值范围
我有一个文本字段,它必须只取特定范围的数值,比如m到n。我看过很多文章,但它们都只是说如何设置文本字段的最大长度。但是我需要设置文本字段,这样它只接受范围内的值,比如23到103。通过将键盘类型设置为数字键盘,我设法确保文本字段只接受数字值。有人请帮忙 用户编辑完文本字段后,可以检查该值Ios 设置文本字段的数值范围,ios,objective-c,uitextfield,Ios,Objective C,Uitextfield,我有一个文本字段,它必须只取特定范围的数值,比如m到n。我看过很多文章,但它们都只是说如何设置文本字段的最大长度。但是我需要设置文本字段,这样它只接受范围内的值,比如23到103。通过将键盘类型设置为数字键盘,我设法确保文本字段只接受数字值。有人请帮忙 用户编辑完文本字段后,可以检查该值 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
将文本字段的委托设置为视图控制器,然后:
- (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;
}
通常通过使用具有最小/最大可接受值的自定义数字格式化程序来实现这一点,如下所示:
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;
}
试试这个。
如果要设置特定文本字段的范围
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
我正在尝试开发一个iOS应用程序。如果你想将最小值设置为23,那么当textfield上的类型2表示你期望的值时会发生什么?好的。你说得对。但我急需设置一个更高的限制。保留下限。你可以在textfield:ShouldChangeCharactersRange:replacementString:中这样做。只需将输入限制为t他将数字从0到9,并为最多103个东西添加额外的逻辑。使用数字键盘也不会限制任何输入。您仍然可以复制和粘贴或使用外部键盘。@Amar否。这不是关于界面生成器或Xcode的问题。谢谢,但我需要的是,如果上限为103,则用户必须无法键入104.这就是为什么我在textfield shouldendediting中返回NO。在输入有效值之前,他不能停止编辑textfield。我认为逻辑应该在textfield:shouldChangeCharactersRange:replacementString:method中。