我有一个格式为uitextfield:DD / MM / YYYY,例如: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 /'=预期结果 你能告诉我吗?
答案 0 :(得分:1)
使用以下代码实现所需的结果或文本字段验证。
-(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:@""]
,所以即使你输入退格键,它也能正常工作。
答案 1 :(得分:0)
您可以将3个文本字段用于日,月和年而不是1.eg -
[textfeild_day] [label for "/"]
[textfeild_month] [label for "/"]
[textfeild_year]