处理键盘遮挡自定义cell上的textField

2017-03-20  本文已影响30人  没错就是豪哥灬

在viewController里面监听键盘出现以及消失,

//键盘监控

[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotificationobject:nil];

[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWillHide:)name:UIKeyboardWillHideNotificationobject:nil];

然后再键盘将要出现的方法里面作如下处理:

/**

*键盘即将出现

*/

- (void)keyboardWillShow:(NSNotification*)notif

{

NSDictionary*info = [notif userInfo];

NSValue*value = [info objectForKey:UIKeyboardFrameEndUserInfoKey];

CGSize keyboardSize = [value CGRectValue].size;

self.currentKeyBoardSize=keyboardSize;//获取到键盘的高度(不管是第三方键盘还是系统自带的)

NSIndexPath* path=[NSIndexPath indexPathForRow:self.currentTF.tag inSection:0];//获取到点击的textField所属的cell的path

CGRect rect4TableView=[self.orderTableView rectForRowAtIndexPath:path];//获取到cell在tableView上的坐标

NSString*str =NSStringFromCGRect(rect4TableView);//结构体转化为字符串

NSSLog(@"rect4TableView==%@",str);

CGRect rect4SuperView=[self.orderTableView convertRect:rect4TableView toView:self.view]; //获取到cell在当前view的坐标

NSString*str2 =NSStringFromCGRect(rect4SuperView);

NSSLog(@"rect4TableView==%@",str2);

CGFloat textY=rect4SuperView.origin.y+rect4SuperView.size.height;//cell距顶部的距离    +rect4SuperView.size.height是因为获取的只是cell顶部到view顶部的距离

NSSLog(@"textY==%.2f",textY);

CGFloat  bottomY=SCREEN_HEIGHT-textY;//将要编辑的tf所属的cell距底部的距离

NSSLog(@"bottomY==%.2f",bottomY);

if(bottomY>=keyboardSize.height)

{

return;

}

self.currentContentOffset=self.orderTableView.contentOffset.y;//获取到点击textField时,tableView的偏移量

NSSLog(@"当前出去的距离:%.2f",self.orderTableView.contentOffset.y);

CGFloat height_move=keyboardSize.height-bottomY+self.orderTableView.contentOffset.y;//要移动的距离

[self.orderTableView setContentOffset:CGPointMake(0, height_move) animated:YES];//让tableView内容上移

}

/**

*键盘即将消失

*/

- (void)keyboardWillHide:(NSNotification*)notif

{

[self.orderTableView setContentOffset:CGPointMake(0,self.currentContentOffset) animated:YES];//结束输入的时候tableView内容回到之前的位置

}

上一篇下一篇

猜你喜欢

热点阅读