首先是获取点击的textField在当前View中的位置,这里用到了坐标系转换的方法
CGPoint pt = [self.view convertPoint:center fromView:cell];
然后在监听键盘弹出事件中,判断键盘是不是会遮挡住该输入框,算出遮盖的高度差,然后设置tableView的contentInset,多次尝试的是contentoffert不是很准确而且效果不是很好
NSDictionary *info = [notification userInfo];
CGRect keyboardSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGFloat height = UI_CURRENT_SCREEN_HEIGHT - self.selectTextFieldOffset - 64;
if (keyboardSize.size.height + 35 > height) {
CGFloat heightOffset = IS_IPAD_DEVICE?0:55;
self.safeTableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardSize.size.height-heightOffset, 0);
self.safeTableView.scrollIndicatorInsets = UIEdgeInsetsMake(0, 0, keyboardSize.size.height-heightOffset, 0);
} else{
self.safeTableView.contentInset = UIEdgeInsetsZero;
self.safeTableView.scrollIndicatorInsets = UIEdgeInsetsZero;
}
最后在键盘收回的方法中self.safeTableView.contentInset = UIEdgeInsetsZero;
self.safeTableView.scrollIndicatorInsets = UIEdgeInsetsZero;