美文网首页
处理键盘遮挡自定义cell上的textField

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

作者: 没错就是豪哥灬 | 来源:发表于2017-03-20 12:21 被阅读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内容回到之前的位置

    }

    相关文章

      网友评论

          本文标题:处理键盘遮挡自定义cell上的textField

          本文链接:https://www.haomeiwen.com/subject/zvvbnttx.html