我有一个格式为 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/