ios - 在日期字段中自动插入 '/'

标签 ios objective-c

我有一个格式为 DD/MM/YYYY 的 uitextfield,例如:12/03/1982 我想当用户输入“2”和“3”时,这个字段会自动在它们后面插入“/”。我在方法中执行了此操作:

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

检查:

NSString *wholeTextName =
[textField.text stringByReplacingCharactersInRange:range
                                        withString:string];
LogDebug(@"WholeText: %@", wholeTextName);


    if ([textField isEqual:self.dateOfBirthTextField])
    {
        if (([wholeTextName length] == 2)||(([wholeTextName length] == 5))) {
        textField.text=[wholeTextName stringByAppendingString:@"/"];
        }

但是当我输入“2”时,此文本字段上的结果是: “12/2”不是“12/”=预期结果 你能帮我推荐一下吗?

最佳答案

使用以下代码实现您想要的结果或文本字段验证。

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *wholeString = textField.text;
    if ((wholeString.length == 2 || wholeString.length == 5) && ![string isEqualToString:@""])
    {
       wholeString = [wholeString stringByAppendingString:@"/"];
       textField.text = wholeString;
    }
    else if(wholeString.length == 10 && ![string isEqualToString:@""])
    {
       return NO;
    }

    return YES;
}

这里我添加了一个 else if 条件来限制超过 10 个字符和一个条件 ![string isEqualToString:@""],所以即使你输入退格,它也能正常工作。

关于ios - 在日期字段中自动插入 '/',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30935101/

相关文章:

ios - 如何强制 View Controller 调用 preferredFocusView?

iOS - 添加新 View /按下按钮切换 View

ios - SpriteKit 游戏加载屏幕(不是启动屏幕)

objective-c - 当你运行 self=[super init] 并且它返回 nil 时,正确的 react 是什么?

objective-c - 使用 Physics SKSpriteNode 子项暂停 SpriteKit 游戏

objective-c - 如何通过 CGRect 过滤 NSArray 中的 CGPoints

objective-c - 为什么 objc_super.receiver 在 ARC 中不可用?

ios - iOS模拟器中是否有相机设备模拟?

ios - 在应用商店页面自定义应用程序库

ios - 四种设计模式组合——Objective C 示例代码?