格式化uiTextField for phoneNumber和date

时间:2013-12-11 12:27:18

标签: ios objective-c nsstring uitextfield parse-platform

我正在使用解析来存储我的数据。我在视图控制器中有一堆用于注册用户的UITextField。

现在,在我的手机文字字段中,如何根据总长度格式化文本字段以显示以下内容。 +55(21)99999-9999 = 13个数字 +55(21)9999-9999 = 12个数字

我想接受12和13号码并在文本字段中显示格式化的手机。

现在,为了保存它来解析,我想用格式+,(,), - 保存格式化的数字。

我还想将日期文本字段格式化为dd / mm / yyyy。任何人都可以帮助我吗?

感谢。

UPDATE 好的,所以我做了以下事情:

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range    replacementString:(NSString *)string {

    if (_telefoneTextField.text.length == 0)
    _telefoneTextField.text = [NSString stringWithFormat:@"(%@",_telefoneTextField.text];

    if (_telefoneTextField.text.length == 3)
        _telefoneTextField.text = [NSString stringWithFormat:@"%@) ",_telefoneTextField.text];

    if (_telefoneTextField.text.length == 9)
        _telefoneTextField.text = [NSString stringWithFormat:@"%@-",_telefoneTextField.text];

    return YES;
}

else if (textField == self.telefoneTextField)
    {
        if (_telefoneTextField.text.length == 14)
            {
                NSLog(@"Telefone sem o 9");
                [self.nascimentoTextField becomeFirstResponder];
            }
        if (_telefoneTextField.text.length == 15)
            {
                NSLog(@"Telefone COM o 9");
                NSMutableString *telefone = [[NSMutableString alloc]   initWithString:_telefoneTextField.text];
                [telefone deleteCharactersInRange:NSMakeRange(9,1)];
                [telefone insertString:@"-" atIndex:10];
                NSLog(@"%@", telefone);
                _telefoneTextField.text = telefone;
                [self.nascimentoTextField becomeFirstResponder];
            }
        else
        {
            NSLog(@"Telefone NAO esta no formato");
        }

    }

现在,它的工作方式与我想要的一样。它在用户输入时实时更改格式,完成编辑后检查以查看有多少个字符,如果是15,则会再次更改格式。

现在,我不能做的一件事:如何使用键盘删除电话号码,我的意思是,它不会删除“ - ”字符前的数字。

感谢。

1 个答案:

答案 0 :(得分:0)

使用正则表达式实现此目的的最佳方法。请参阅以下讨论 Regex not working correctly on iOS