1.
- (void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self];}- (void)registerNotification { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showKeyboard:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideKeyboard:) name:UIKeyboardWillHideNotification object:nil];}#pragma mark - keyboard- (void)showKeyboard:(NSNotification *)noti { NSDictionary *info=[noti userInfo]; NSTimeInterval duration = [info[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; UIViewAnimationOptions options = [info[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue] << 16; CGRect keyboardRect = [info[UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGFloat keyboardHeight = MIN(CGRectGetWidth(keyboardRect), CGRectGetHeight(keyboardRect)); [UIView animateWithDuration:duration delay:0 options:options animations:^{ CGFloat compareH = self.tableView.contentSize.height -(self.view.height - 45 - 64 - keyboardHeight); if (compareH > 0) { if (compareH < keyboardHeight) { self.tableView.transform = CGAffineTransformMakeTranslation(0, -compareH); } else { self.tableView.transform = CGAffineTransformMakeTranslation(0, -keyboardHeight); } } self.bottomView.transform = CGAffineTransformMakeTranslation(0, -keyboardHeight); } completion:nil];}- (void)hideKeyboard:(NSNotification *)noti { NSDictionary *info=[noti userInfo]; NSTimeInterval duration = [info[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; UIViewAnimationOptions options = [info[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue] << 16; [UIView animateWithDuration:duration delay:0 options:options animations:^{ self.tableView.transform = CGAffineTransformIdentity; self.bottomView.transform = CGAffineTransformIdentity; } completion:nil]; }