将 UITextField 限制在某个字符范围内

Posted

技术标签:

【中文标题】将 UITextField 限制在某个字符范围内【英文标题】:Limiting UITextField to a certain character range 【发布时间】:2012-05-01 11:00:33 【问题描述】:

谁能帮我找出一种简单的方法来限制 UITextField 范围,使输入的数字介于 14 和 70 之间,如果数字大于或小于范围内的数字,则文本字段会自行清除?我已经将输入文本的长度限制为不超过 2 个字符,如下所示:

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

NSString *newString = [ageField.text stringByReplacingCharactersInRange:range     withString:string];
return !([newString length] > 2);

剩下的唯一事情就是实现这个行为。有人吗?

【问题讨论】:

使用正则表达式。 如果你能对 cme​​ts 投反对票,我肯定会这样做。 【参考方案1】:

更新:

  NSInteger v = [newString integerValue];
 if (v < 14 || v > 72) 
// Do whatever you do when the string value is invalid
// BUT ALSO ADD:
textView.text = @"";

而不是返回尝试:

   if (newString.length != 2) 
  // do what you want!
return;
 else 
// PUT YOUR CODE HERE

【讨论】:

现在很好,但是当我输入一个值时,比如 10,它只会删除第一个数字,在文本字段中留下“0”,从而可以输入 0 :( 主要问题出在代码 return !([newString length] &gt; 2); 中,它确实限制了超过 2 位的数字,但它允许输入一位数字。那么有没有可能以某种方式改变呢? :( 现在它根本不允许我输入任何数字:( 做了一个愚蠢的粗心错误检查更新评论答案 return !([newString length] == 2)return ([newString length] == 2) 都没有任何作用 :( 由于我的固执,我注定要失败 :(

以上是关于将 UITextField 限制在某个字符范围内的主要内容,如果未能解决你的问题,请参考以下文章

UITextField中文输入法输入时对字符长度的限制

设置 UITextField 约束以在换行符中继续

无法将字符限制为 iOS 中 UITextField 内的字母数字 [重复]

UnicodeEncodeError:“ascii”编解码器无法在位置 126 编码字符 u'\u2019':序数不在范围内(128)

UnicodeEncodeError:“ascii”编解码器无法在位置 3 2 编码字符 u'\u2013':序数不在范围内(128)

UITextField iOS的输入范围宽度