【发布时间】:2015-07-03 05:02:40
【问题描述】:
我有三个 UITextFields
UITextField1
UITextField2
UITextField3
编辑完 textField2 后,我点击键盘上的“下一步”,它隐藏了键盘,但没有显示选择器。
如果我完成了 textField2 的编辑并且没有关闭键盘并点击 textField3,则键盘不会隐藏并且选择器显示在键盘上方,那么除非我返回到 textField2 并在任何 textField 之外点击,否则无法关闭键盘。
sn-p:
- (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;
}
}
}
【问题讨论】:
标签: ios objective-c keyboard uitextfield