【问题标题】:Mobile number validation issue in iOSiOS中的手机号码验证问题
【发布时间】:2015-11-21 12:09:31
【问题描述】:

我正在开发一个 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。

【问题讨论】:

    标签: ios objective-c iphone validation uitextfield


    【解决方案1】:

    您可以使用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;
        }
    
    }
    

    【讨论】:

    • Thnx 兄弟...我不知道这个位置属性。
    【解决方案2】:

    最好的方法是使用libPhoneNumber。如果链接已损坏,只需 google 即可。它是 Google 的一个库,最初是为 Android 编写的。它已被移植到多种语言,包括 Objective-C。

    您想出的任何东西都将缺少极端情况和 libPhoneNumber 为您处理的各种规则。这是一个“不要自己动手”的领域。

    【讨论】:

      猜你喜欢
      • 2020-01-07
      • 1970-01-01
      • 2013-04-14
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      相关资源
      最近更新 更多