I have multiple textfields on a UIView.
I resign for a previous textField in textFieldShouldBeginEditing method, where following sequence of events are performed
UIKeyboardWillHideNotification is received corresponding to that field where the keyboard for the previous field is hidden.
the method textFieldShouldBeginEditing returns a YES and then
UIKeyboardWillShowNotification is received where the keyboard for the current field is displayed.
However, in OS 3.2 even though textFieldShouldBeginEditing returns a YES, UIKeyboardWillShowNotification for the current field is not received.
The logic works for OS < 3.2
Any ideas where I might be doing wrong?
Listed below a part of my code (with only two text fields in xib).
I need to perform a set of operations at keyboardWillShow and keyboardWillHide Look at the difference on running the code in OS 3.2 and OS < 3.2
Can anyone explain the difference in behaviour?
.h file #import @interface ExampleViewController : UIViewController { IBOutlet UITextField *numericTextField; IBOutlet UITextField *alphaTextField; UITextField *lastTextField; int lastCursorPos; int cursorPosition; NSMutableArray *textFields; } @property (nonatomic, retain) UITextField *lastTextField; @property (nonatomic, retain) NSMutableArray *textFields; @end .m file - (void)viewWillAppear:(BOOL)animated { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:self.view.window]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:self.view.window]; self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]; self.textFields = [[NSMutableArray alloc] initWithCapacity:2]; [self.textFields insertObject:alphaTextField atIndex:0]; [self.textFields insertObject:numericTextField atIndex:1]; cursorPosition = 1; [numericTextField becomeFirstResponder]; } -(void)viewWillDisappear:(BOOL)animated { [self setEditing:NO animated:YES]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; } - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { int index; for(UITextField *aField in self.textFields){ if (textField == aField){ index = [self.textFields indexOfObject:aField]; } } if(index>=0 ){ lastCursorPos = cursorPosition; self.lastTextField = [self.textFields objectAtIndex:lastCursorPos-1]; cursorPosition = index +1; } [self.lastTextField resignFirstResponder]; return YES; } - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { return YES; } - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; } - (void)keyboardWillShow:(NSNotification *)notif { NSLog(@"Inside keyboardWillShow"); } - (void)keyboardWillHide:(NSNotification *)notif { NSLog(@"Inside keyboardWillHide"); }