您的位置:首页 > 产品设计 > UI/UE

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;

}
很明显,这样判断比上面的效率高很多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: