我有三个文本字段。
vacDate
vacTime
vacType
当我单击vacDate
orvacTime
时,我显示 datepicker myDatePicker
。
此外,当我单击任何地方时,我调用 hideAllKeyboards 隐藏所有键盘和日期选择器。
- (void)textFieldDidBeginEditing:(UITextField *)textField {
NSLog(@"textFieldDidBeginEditing===%@" , textField.text);
CGAffineTransform translation = CGAffineTransformIdentity;
myDatePicker.hidden = YES;
if (textField==vacDate || textField==vacTime) {
[vacDate resignFirstResponder];
[vacTime resignFirstResponder];
[vacType resignFirstResponder];
myDatePicker.hidden = NO;
}
if (textField==vacType) {
translation = CGAffineTransformMakeTranslation(0, -60);
}
[UIView beginAnimations:nil context:nil];
self.view.transform = translation;
[UIView commitAnimations];
}
-(IBAction)hideAllKeyboards {
NSLog(@"hideAllKeyboards...");
[vacDate resignFirstResponder];
[vacTime resignFirstResponder];
[vacType resignFirstResponder];
myDatePicker.hidden = YES;
NSLog(@"my date data is %@", myDatePicker.date);
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSString *strDate = [dateFormatter stringFromDate:[myDatePicker date]];
NSLog(@"my date is ::: %@", strDate);
vacDate.text = strDate;
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"hh mm a"];
strDate = [dateFormatter stringFromDate:[myDatePicker date]];
NSLog(@"my date is ==%@==", strDate);
strDate = [strDate stringByReplacingOccurrencesOfString:@" " withString:@":"];
strDate = [strDate stringByReplacingOccurrencesOfString:@":A" withString:@" A"];
strDate = [strDate stringByReplacingOccurrencesOfString:@":P" withString:@" P"];
vacTime.text = strDate;
[UIView beginAnimations:nil context:nil];
self.view.transform = CGAffineTransformIdentity;
[UIView commitAnimations];
}
下面是我正在做的事情。
点击 vacDate 然后设置时间。设置好时间后,点击任意位置。日期和时间在 vacDate 和 vacTime 中设置。现在我转到 vacType 并输入文本,然后单击完成。现在所有的键盘都被隐藏了。
现在我再次单击 vacType。现在我看到了键盘(默认)。现在我单击 vacDate 或 vacTime。在这里,我希望像第一步一样显示 datepicker ,但我看到了 default keyboard。
知道为什么 resignFirstResponder 不能在所有键盘上工作。由于键盘不调用 resignFirstResponder,我无法看到 datepicker。
编辑 1
使用我的代码,我注意到当我输入 vacType 然后单击返回到 vacDate 或 vacTime 时,我看到了 datepicker 的上部,但默认键盘没有隐藏。我仍然看到默认键盘。我想强行隐藏这个键盘。