iOS中的手机号码验证问题



我正在开发一个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.locationrange.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为你处理的各种规则。这是一个"不要自己滚"的领域。

最新更新