iOS 键盘弹出视图精准上移
1 视图精准位移,需要计算出输入框距离屏幕底部的距离,然后
计算出输入框需要上移的距离,就是整个视图需要上移的距离,
注意,我们可以自行设置一个适当的buffer,我这里是40,就是输入框距离
键盘有一个40的距离,避免紧挨着 导致体验不佳
- (void)keyboardWillShow:(NSNotification *)noti
{
UpdateUserInfoView *userInforView = self.editCell.userInfoView;
CGRect userInfoViewframe = [self.editCell convertRect:userInforView.frame toView:window];
CGFloat bottomSpace = GetScreenHeight() - CGRectGetMaxY(userInfoViewframe);
//设置一个buffer
bottomSpace -= 40;
CGRect keyboardRect = [noti.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat boardHeight = keyboardRect.size.height;
NSLog(@" keyboardWillShow editCellFrame%@ bottomSpace%f boardHeight%f", NSStringFromCGRect(userInfoViewframe), bottomSpace, boardHeight);
CGFloat duration = [noti.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue];
Weakify(self);
[UIView animateWithDuration:duration animations:^{
Strongify(self);
self.backView.y -= (boardHeight - bottomSpace);
}];
[self.tableView addGestureRecognizer:self.endEditingTap];
}