我想将UITextField中的用户输入限制为1-105。我已经设置了委托,并通过以下代码成功限制了实际的字符数,这些代码可以在Stackoverflow的其他地方找到。我是否可以添加一些内容以强制用户输入1到105之间的任何整数?
#define MAXLENGTH 2
- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger oldLength = [_startLevel.text length];
NSUInteger replacementLength = [string length];
NSUInteger rangeLength = range.length;
NSUInteger newLength = oldLength - rangeLength + replacementLength;
BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;
return newLength <= MAXLENGTH || returnKey;
}
我正在使用数字键盘,因此用户已限制输入数字。我只需要找到能够让他们在范围内输入内容的东西。
提前致谢。
答案 0 :(得分:1)
首先将字符串转换为数字。为了便于使用和缺乏控制,您采用-[NSString integerValue]
* ,NSNumberFormatter
和NSScanner
的方式。格式化程序会为您提供NSNumber
,然后您可以从中获取integerValue
* ;另外两个直接为你提供原语。
完成后,将数字与范围的端点进行比较,创建一个布尔值。将该布尔值与其他两个相结合 - 长度和缺少换行符 - 您已经拥有,并返回结果。
* 对于浮点数,floatValue
或doubleValue
。
答案 1 :(得分:0)
在didEndEditing中,获取文本,将其转换为整数,然后检查值。如果超出范围,则显示错误消息。您也可以将文本重置为之前的值,假设它在范围内开始。
我使用正则表达式来验证正确格式的输入。我在RegEx上发现了一些我可以用来构建表达式的文档。您可以创建一个需要输入为1,2或3位的正则表达式。我不是专家,但字符串@“^ [0-9] {1,3} $”应该在0到9之间需要1到3位数字(0-9定义合法字符,{1,3} }表示用户可以输入1到3个。开头的^将表达式锚定到字符串的开头,结尾的“$”将表达式锚定到字符串的末尾。)
答案 2 :(得分:-1)
您可以使用以下代码
NSString *numberRegex = @"[1-9]||[0-9][1-9]||[0-1]0[0-5]";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", numberRegex];
BOOL b = [emailTest evaluateWithObject:numberField.text];
if (b)
{
//Code when number is in the range 1-105
}
else
{
//Code when number is not in the range 1-105
}
希望这有助于你