将 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);
剩下的唯一事情就是实现这个行为。有人吗?
【问题讨论】:
使用正则表达式。 如果你能对 cmets 投反对票,我肯定会这样做。 【参考方案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] > 2);
中,它确实限制了超过 2 位的数字,但它允许输入一位数字。那么有没有可能以某种方式改变呢? :(
现在它根本不允许我输入任何数字:(
做了一个愚蠢的粗心错误检查更新评论答案
return !([newString length] == 2)
和 return ([newString length] == 2)
都没有任何作用 :( 由于我的固执,我注定要失败 :(以上是关于将 UITextField 限制在某个字符范围内的主要内容,如果未能解决你的问题,请参考以下文章
无法将字符限制为 iOS 中 UITextField 内的字母数字 [重复]
UnicodeEncodeError:“ascii”编解码器无法在位置 126 编码字符 u'\u2019':序数不在范围内(128)
UnicodeEncodeError:“ascii”编解码器无法在位置 3 2 编码字符 u'\u2013':序数不在范围内(128)