美文网首页
关于tableview中textfield输入键盘遮挡问题

关于tableview中textfield输入键盘遮挡问题

作者: mengshuobuyi | 来源:发表于2016-06-22 18:04 被阅读220次

    最近项目中购物车添加了商品数量的编辑功能,so问题来了,若我们编辑的商品cell位于tableview上方,那一切ok,但是如果是底部的cell呢,到github上一通找,的确有大牛开源了三方->https://github.com/hackiftekhar/IQKeyboardManager。但是明显大材小用了,下面谈一谈自己的处理

    -(BOOL)textFieldShouldBeginEditing:(UITextField*)textField {

    //textfield的tag关联的是cell的section和row

        NSInteger  section = textField.tag/1000;

        NSInteger  row = textField.tag%1000;

    //取出编辑的cell

        NSIndexPath *index = [NSIndexPath indexPathForRow:row inSection:section];

        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:index];

    //将cell的坐标转化到window上,也可以转换到view上这个随意

        UIWindow*win = [UIApplication sharedApplication].keyWindow;

        CGRect rect = [win convertRect:CGRectMake(0,0, cell.frame.size.width, cell.frame.size.height)fromView:cell];

       DebugLog(@"-----------%f",rect.origin.y);

    //算偏移量,216是键盘高度,50是tab高度,严谨一点可以加键盘监听获取高度

       CGFloatoffset =APP_H-216-50- rect.origin.y- rect.size.height;

       DebugLog(@"-_______--%f",offset);

      if(offset <=0) {

         [UIView animateWithDuration:0.3animations:^{

         CGRect frame =self.view.frame;

         DebugLog(@"-----________-----%f",frame.origin.y);

         frame.origin.y+= offset;

         self.view.frame= frame;  

     }];

    }

    return yes;}

    编辑结束后在shouldend里面将view还原。

    还有一种实现是拿出cell,通过tableview scrolltoindexpath这个方法讲cell可见,但是在textfield resignFirstResponder之后没法回滚,需重新做动画实现。

    相关文章

      网友评论

          本文标题:关于tableview中textfield输入键盘遮挡问题

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