【问题标题】:format uiTextField for phoneNumber and date为 phoneNumber 和日期格式化 uiTextField
【发布时间】:2013-12-11 12:27:18
【问题描述】:

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

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

我想同时接受 12 和 13 的数字,并在文本字段中显示格式化的电话。

现在,为了将其保存以进行解析,我想用字符 +、(、)、- 保存格式化数字。

我还想将我的日期文本字段格式化为 dd/mm/yyyy。谁能帮帮我?

谢谢。

更新 好的,所以我做了以下操作:

-(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,它会再次更改格式。

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

谢谢。

【问题讨论】:

  • 我不太明白。'我正在使用解析'是什么意思?您是指框架或特定方法还是将 NSString 解析为数字?我用 NSRegularExpression 来验证然后保存为字符串。对于日期字段,如果您想以特定格式打印日期,请使用 NSDateFormatter 类。
  • 你可以试试这个电话号码stackoverflow.com/a/13227608/2798777

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多