美文网首页
如何控制tableview内的txextFiled不遮挡键盘?

如何控制tableview内的txextFiled不遮挡键盘?

作者: makemake | 来源:发表于2016-04-09 00:42 被阅读132次

    BUG环境:

    1.控制器:tableviewController

    2.自定义cell内使用textfiled

    3.- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view 方法获取到的textFiled的CGRect是一个固定值,没法用

    4.通知中心监测键盘弹出事件、各种计算、计算、计算改变view.fram的值都不尽人意

    - (void)keyBoardWillShow:(NSNotification *)noti

    //

    {

    NSLog(@"键盘弹出");

    NSLog(@"%@", noti.userInfo);

    CGRect keyFrame = [noti.userInfo[@"UIKeyboardFrameEndUserInfoKey"] CGRectValue];

    CGFloat keyHeight = keyFrame.size.height; // 键盘的高度;

    //  键盘高度  >屏幕高  - 当前屏幕有内容的高度

    CGFloat h = kScreenHeight  - kScreenHeight / 4 * _sectionNum;

    if (keyHeight > h ) { // 意味着键盘挡住textField:

    CGRect rect = self.view.frame;

    rect.origin.y -= keyHeight - h ; // textFiled的父视图,往上移动;

    self.view.frame = rect;

    }

    }

    解决方案:

    主要代码如下:

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

    {

    UITableViewCell * cell=(UITableViewCell *)[[textField  superview] superview];

    NSIndexPath *indexPath=[self.tableView indexPathForCell:cell];

    if (indexPath.section==0) {

    }else {

    [UIView beginAnimations:@"ResizeForKeyBoard" context:nil];

    //========核心代码===========

    //获取当前tableview的contensize.heght  加上 键盘高度 + 键盘的tabbar高度 = 260 刚刚好

    self.tableView.contentSize = CGSizeMake(0, self.tableView.contentSize.height + 260);

    }

    return YES;

    }

    //收键盘

    -(BOOL)textFieldShouldReturn:(UITextField *)textField

    {

    [textField resignFirstResponder];

    return YES;

    }

    NSNotificationCenter *center = [NSNotificationCenter defaultCenter];

    // 注册监听:

    [center addObserver:self selector:@selector(keyBoardWillHide:) name:UIKeyboardWillHideNotification object:nil];

    - (void)keyBoardWillHide:(NSNotification *)noti

    {

    //    NSLog(@"键盘收起");

    self.tableView.contentSize = CGSizeMake(0, self.tableView.contentSize.height - 260);

    self.view.frame = self.view.bounds;

    }

    相关文章

      网友评论

          本文标题:如何控制tableview内的txextFiled不遮挡键盘?

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