【问题标题】:US format mobile numbers in ios? [duplicate]ios中的美国格式手机号码? [复制]
【发布时间】:2015-05-18 05:14:14
【问题描述】:

我想在UITextfield 中显示“1 (xxx)-(xxx)-(xxx)”,并且只输入 10 位数字。

  • 有效的 1 到 9 个数字。
  • 才开始1。
  • 如果输入 0,则不会被采纳。

我如何做到这一点?

【问题讨论】:

    标签: ios


    【解决方案1】:

    我在我的一个项目中完成了我们的电话号码验证。希望这对您有所帮助。

    -(void)textFieldDidBeginEditing:(UITextField *)textField {
     [textField performSelector:@selector(shouldChangeTextInRange:replacementText:)];
    }
    
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  {
     NSString *text = textField.text;
    
        NSString *acceptedcharacters = @"0123456789-/";
        NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:acceptedcharacters] invertedSet];
        const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding];
        int isBackSpace = strcmp(_char, "\b");
        if (isBackSpace == -8) {
            NSLog(@"deleted");
        }
        else {
            if (textField.text.length == 1) {
    
                textField.text = [NSString stringWithFormat:@"%@-",text];
                return YES;
            }
            if (textField.text.length == 5) {
    
                textField.text = [NSString stringWithFormat:@"%@-",text];
                return YES;
            }
            if (textField.text.length == 9) {
    
                textField.text = [NSString stringWithFormat:@"%@-",text];
                return YES;
            }
        }
        //   if (textField == self.phoneNumber_txtField) {
        NSUInteger newLength = [textField.text length] + [string length] - range.length;
        return (newLength > 14) ? NO : YES;
    
        //  }
    
        NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
    
        return [string isEqualToString:filtered];
     }
    

    【讨论】:

    • 如何调用这个方法。
    • 这是UITextField的代表。您将 texfield 委托设置为 self。并将此方法放在您的 ViewController 中。会自动调用
    • 如果你想显式调用它,那么...... -(void)textFieldDidBeginEditing:(UITextField *)textField { [textField performSelector:@selector(shouldChangeTextInRange:replacementText:)]; }
    • 我已经设置了委托方法,但它没有调用。
    • 您可以使用 perform 选择器在 -(void)textFieldDidBeginEditing:(UITextField *)textField 方法中显式调用它。就像我上面提到的
    猜你喜欢
    • 2019-06-22
    • 2012-02-01
    • 2017-08-14
    • 2020-07-29
    • 2020-10-29
    • 1970-01-01
    • 2010-10-14
    • 2011-08-16
    • 1970-01-01
    相关资源
    最近更新 更多