我有三个UITextField
UITextField1 <- 显示键盘
UITextField2 <- 显示键盘
UITextField3 <- 显示自定义inputView(pickerView)
当完成编辑textField2时,我点击键盘上的“下一个”,它会隐藏键盘,但选择器没有显示。
如果我完成编辑textField2并且不关闭键盘,然后点击textField3,键盘不会隐藏,并且选择器会显示在键盘上方,除非我返回到textField2并在任何textField外面点击,否则无法关闭键盘。
片段:
在textField3显示pickerView之前,如何在所有情况下关闭键盘?根据rmp的建议进行编辑。
UITextField1 <- 显示键盘
UITextField2 <- 显示键盘
UITextField3 <- 显示自定义inputView(pickerView)
当完成编辑textField2时,我点击键盘上的“下一个”,它会隐藏键盘,但选择器没有显示。
如果我完成编辑textField2并且不关闭键盘,然后点击textField3,键盘不会隐藏,并且选择器会显示在键盘上方,除非我返回到textField2并在任何textField外面点击,否则无法关闭键盘。
片段:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
-(void) textFieldDidBeginEditing:(UITextField *)textField
{
if(textField == self.textField3){
// Close the keyboard.
[self.textField3 resignFirstResponder];
[self.view endEditing:YES];
ActionSheetDatePicker *picker;
NSString *fechaIni = [self.dates objectAtIndex:0];
NSString *fechaFin = [self.dates objectAtIndex:[self.dates count]-1];
NSDate *fechaMarcada;
if(self.fecha == nil){
fechaMarcada = [self fromDateString:fechaIni format:@"yyyyMMdd"];
}else{
fechaMarcada = self.fecha;
}
picker = [[ActionSheetDatePicker alloc] initWithTitle:@"Seleccione" datePickerMode:UIDatePickerModeDate selectedDate:fechaMarcada target:self action:@selector(datePickerValueChanged:) origin:textField cancelAction:nil];
[picker setMinimumDate:[self fromDateString:fechaIni format:@"yyyyMMdd"]];
[picker setMaximumDate:[self fromDateString:fechaFin format:@"yyyyMMdd"]];
[picker setDoneButton:[[UIBarButtonItem alloc] initWithTitle:@"Ok" style:UIBarButtonItemStylePlain target:nil action:nil]];
[picker setCancelButton:[[UIBarButtonItem alloc] initWithTitle:@"Cancelar" style:UIBarButtonItemStylePlain target:nil action:nil]];
[picker showActionSheetPicker];
self.textField3.inputView = picker.pickerView;
self.textField3.text = [Utils formatDate:[self formatDate:fechaMarcada]];
[Utils animateScreenUpByHalfKeyboardHeight:self.view];
}else if(textField == self.textField1){
if([self.currency.code isEqualToString:@"USD"]){
textField.keyboardType = UIKeyboardTypeDecimalPad;
}else{
textField.keyboardType = UIKeyboardTypeNumberPad;
}
}
}
在textField3显示pickerView之前,如何在所有情况下关闭键盘?根据rmp的建议进行编辑。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[Utils navigationBarTitleAndSubtitle:self title:@"Title" subtitle:@"Subtitle"];
NSString *fechaIni = [self.dates objectAtIndex:0];
NSString *fechaFin = [self.dates objectAtIndex:[self.dates count]-1];
NSDate *fechaMarcada;
if(self.fecha == nil){
fechaMarcada = [self fromDateString:fechaIni format:@"yyyyMMdd"];
}else{
fechaMarcada = self.fecha;
}
self.picker = [[ActionSheetDatePicker alloc] initWithTitle:@"Seleccione" datePickerMode:UIDatePickerModeDate selectedDate:fechaMarcada target:self action:@selector(datePickerValueChanged:) origin:self.textField3 cancelAction:nil];
[self.picker setMinimumDate:[self fromDateString:fechaIni format:@"yyyyMMdd"]];
[self.picker setMaximumDate:[self fromDateString:fechaFin format:@"yyyyMMdd"]];
[self.picker setDoneButton:[[UIBarButtonItem alloc] initWithTitle:@"Ok" style:UIBarButtonItemStylePlain target:nil action:nil]];
[self.picker setCancelButton:[[UIBarButtonItem alloc] initWithTitle:@"Cancelar" style:UIBarButtonItemStylePlain target:nil action:nil]];
//[self.picker showActionSheetPicker];
self.textField3.inputView = self.picker.pickerView;
self.textField3.text = [Utils formatDate:[self formatDate:fechaMarcada]];
}
-(void) textFieldDidBeginEditing:(UITextField *)textField
{
if(textField == self.textField3){
// Close the keyboard.
// [self.view endEditing:YES];
[Utils animateScreenUpByHalfKeyboardHeight:self.view];
}else if(textField == self.textField1){
if([self.currency.code isEqualToString:@"USD"]){
textField.keyboardType = UIKeyboardTypeDecimalPad;
}else{
textField.keyboardType = UIKeyboardTypeNumberPad;
}
}
}