我正在开发一个iOS应用程序,当用户打字时,我必须在其中验证他的电话号码。
条件如下:
1. Starting number can only be 9,8,7
2. Length = 10
3. Only Numbers
如果用户输入任何其他字符,则文本字段上不应打印任何内容。
我正在用- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
方法编写我的所有代码。
我已经成功地实现了这三个条件。我被困在第四种情况下:
**4. User enters 9834 then he jumps to first position and then types 19834**
我处理不了这个。我怎么知道用户已经输入了一些数字,而现在他正在第一个位置输入。这样我就可以返回false。
您可以使用range
来查找用户正在编辑的位置。
使用range.location
或range.length
进行验证。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if(range.location==0){
if ([string isEqualToString:@"9"] || [string isEqualToString:@"8"] || [string isEqualToString:@"7"]) {
return YES;
}
else{
return NO;
}
}
else{
return YES;
}
}
实现这一点的最佳方法是使用libPhoneNumber。如果链接断了,只需在谷歌上搜索即可。这是谷歌的一个库,最初是为Android编写的。它已经移植到多种语言,包括Objective-C。
你想出的任何东西都会缺少角案例和libPhoneNumber为你处理的各种规则。这是一个"不要自己滚"的领域。