UITextField限制数字输入
2015-04-28 10:21
225 查看
很多时候,我们的程序中需要限制输入框的内容,比如密码输入框只能输入数字
一般我使用以下两种方法:
1.设定键盘类型
TextField.keyboardType = UIKeyboardTypeDecimalPad; //键盘类型为数字
2.通过UITextField的代理方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
return [self validateNumber:string];
}
- (BOOL)validateNumber:(NSString*)number {
BOOL res = YES;
NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
int i = 0;
while (i < number.length) {
NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
NSRange range = [string rangeOfCharacterFromSet:tmpSet];
if (range.length == 0) {
res = NO;
break;
}
i++;
}
return res;
}
自己动手过程中发现这样的算法比较繁琐,由于 0-9数字的ASCII值是连续的,所以决定使用ASCII码作为判断条件
- (BOOL)validateNumber:(NSString*)number {
if (number.length == 0) //删除操作
return YES;
int asciiCode = [number characterAtIndex:0];
if (asciiCode >= 48 && asciiCode <= 57)
return YES;
else
return NO;
}
很明显,这样判断比上面的效率高很多。
一般我使用以下两种方法:
1.设定键盘类型
TextField.keyboardType = UIKeyboardTypeDecimalPad; //键盘类型为数字
2.通过UITextField的代理方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
return [self validateNumber:string];
}
- (BOOL)validateNumber:(NSString*)number {
BOOL res = YES;
NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
int i = 0;
while (i < number.length) {
NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
NSRange range = [string rangeOfCharacterFromSet:tmpSet];
if (range.length == 0) {
res = NO;
break;
}
i++;
}
return res;
}
自己动手过程中发现这样的算法比较繁琐,由于 0-9数字的ASCII值是连续的,所以决定使用ASCII码作为判断条件
- (BOOL)validateNumber:(NSString*)number {
if (number.length == 0) //删除操作
return YES;
int asciiCode = [number characterAtIndex:0];
if (asciiCode >= 48 && asciiCode <= 57)
return YES;
else
return NO;
}
很明显,这样判断比上面的效率高很多。
相关文章推荐
- 让UITextField只能输入数字以及限制长度
- 使用UITextField限制只可输入中,英文,数字的方法
- UITextField 限制值输入数字和英文
- IOS开发限制UITextField只可以输入数字
- IOS开发限制UITextField只可以输入数字
- UITextField限制只能输入数字,不能输入其他字符
- IOS开发限制UITextField只可以输入数字
- Swift: UITextfield 只能输入数字或字母,限制长度
- UITextField 限制输入数字及小数点
- iOS UITextField、UITextView只限输入中文、英文、数字及实时限制字符个数封装实现
- UITextField数字输入限制
- iOS UITextField 输入含小数的数字(位数限制)
- iOS UITextField 限制输入长度,中英文混排,汉字占2个长度,英文数字占1个长度
- 关于UITextField 支持中文、英文和数字的限制问题,以及中文九宫格无法输入的解决
- iOS UITextField、UITextView只限输入中文、英文、数字及实时限制字符个数的封装实现代码
- 限制UITextField的输入只为数字的方法
- UITextField只能输入数字限制
- UITextField限制只能输入数字
- UITextField自定义输入限制(纯数字输入,不输入汉字,小数点后位数限制)
- UITextField 只能输入(限制输入)数字和"."