You can do the following, but first make sure you set the UITextField delegate for yourself and
#define kOFFSET_FOR_KEYBOARD 350;
up. This is how far you want to move the view.
//method to move the view up/down whenever the keyboard is shown/dismissed -(void)setViewMovedUp:(BOOL)movedUp { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.3]; // if you want to slide up the view [UIView setAnimationBeginsFromCurrentState:YES]; CGRect rect = self.view.frame; if (movedUp) { // 1. move the view origin up so that the text field that will be hidden come above the keyboard // 2. increase the size of the view so that the area behind the keyboard is covered up. if (rect.origin.y == 0 ) { rect.origin.y -= kOFFSET_FOR_KEYBOARD; //rect.size.height += kOFFSET_FOR_KEYBOARD; } } else { if (stayup == NO) { rect.origin.y += kOFFSET_FOR_KEYBOARD; //rect.size.height -= kOFFSET_FOR_KEYBOARD; } } self.view.frame = rect; [UIView commitAnimations]; } - (void)keyboardWillHide:(NSNotification *)notif { [self setViewMovedUp:NO]; } - (void)keyboardWillShow:(NSNotification *)notif{ [self setViewMovedUp:YES]; } - (void)textFieldDidBeginEditing:(UITextField *)textField { stayup = YES; [self setViewMovedUp:YES]; } - (void)textFieldDidEndEditing:(UITextField *)textField { stayup = NO; [self setViewMovedUp:NO]; } - (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]; } - (void)viewWillDisappear:(BOOL)animated { // unregister for keyboard notifications while not visible. [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; }
source share