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

最近项目中购物车添加了商品数量的编辑功能,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之后没法回滚,需重新做动画实现。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最近忙完项目比较闲,想写一篇博客来分享一些自学iOS的心得体会,希望对迷茫的你有所帮助。博主非科班出身,一些...
    GitHubPorter阅读 1,453评论 9 5
  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,770评论 1 9
  • iphone开发笔记 退回输入键盘 - (BOOL) textFieldShouldReturn:(id)text...
    爱易寒曲易散阅读 631评论 0 1
  • 一位同事的爷爷前两天过世了。平日关系较好,我知道他们家是很难得的传统家庭,自出生到现在将近而立之年,三代五口人一直...
    疏归阅读 245评论 0 0
  • 思念你不远 若隐若现 我闭上双眼 春风拂面 所有的期盼 向往彼岸 不会搁浅 对你的思念 最美的瞬间 片刻闪现 春天...
    文山鹿阅读 525评论 81 42