键盘之上的工具栏,完美实现,动画无缺陷
//键盘代理事件 - (void)keyboardWillHide:(NSNotification *)notification{ _keyBoardShowIng = NO; [UIView animateWithDuration:.25 animations:^{ downView.top = MainScreenHeight; if (_richTextToolBar) { dispatch_async(dispatch_get_main_queue(), ^{ _richTextToolBar.hidden = YES; }); } }]; } - (void)keyboardWillShow:(NSNotification *)notification{ _keyBoardShowIng = YES; NSDictionary *userInfo = [notification userInfo]; NSValue * endValue = [notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; CGFloat height = [endValue CGRectValue].size.height; if(height==0) return; NSNumber *duration = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSNumber *curve = [userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey]; // 添加移动动画,使视图跟随键盘移动 [UIView animateWithDuration:duration.doubleValue animations:^{ [UIView setAnimationBeginsFromCurrentState:YES]; [UIView setAnimationCurve:[curve intValue]]; downView.bottom = MainScreenHeight - height; }]; } 但是记得下面 -(void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; } -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; }