【发布时间】:2015-08-14 09:36:23
【问题描述】:
我有一个 UITextField。我想将字段中允许的最大输入值限制为 10。
即当用户在里面输入数字时,一旦输入值大于10,输入字段中的值将不再更新,除非用户输入小于或等于10的值。
【问题讨论】:
标签: ios uitextfield
我有一个 UITextField。我想将字段中允许的最大输入值限制为 10。
即当用户在里面输入数字时,一旦输入值大于10,输入字段中的值将不再更新,除非用户输入小于或等于10的值。
【问题讨论】:
标签: ios uitextfield
所有其他答案都在限制输入的 length,而 OP 显然要求限制输入的 value。首先,你也可以使用UIStepper
(来源:apple.com)
或 UISlider 用于此目的(与标签一起显示当前值)。这对用户来说也可能更清楚。
如果你坚持基于 UITextField 的方法,你需要实现 textField:shouldChangeCharactersInRange:replacementString: 方法如下:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *text = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSNumberFormatter *numberFormatter = [NSNumberFormatter new];
NSNumber *number = [numberFormatter numberFromString:text];
if (number == nil || [number doubleValue] > 10) {
return NO;
}
return YES;
}
如果您不允许负数,您可能需要添加一些额外的检查。
【讨论】:
试试这个:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if(textField == mytextField)
{
if (textField.text.length == 10)
{
if (range.length == 0)
{
return NO;
}
}
return YES;
}
}
--> 绝对会帮到你
祝你好运
【讨论】: