博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios tableview 上加 textfiled
阅读量:4575 次
发布时间:2019-06-08

本文共 1414 字,大约阅读时间需要 4 分钟。

ios tableview 上加 textfiled 

首先附上我项目中用曾经用到的几张图  并说明一下我的用法:

图1:

图2:

 

图3:

 

心在你我说一下  我当初的实现 方法 ,希望能给你们一些  启示

 

图1:  我采用的是最简单的方法   因为cell的个数比较少 并且不会出现键盘把cell挡住的情况  所以我直接就是用的 view 上边加 label  +textfield  虽然代码很繁琐 但是 还是实现了基本的效果

 

图2:由于这个cellde 个数比较多 再使用   view+label+textfield的方法 就不现实了,  所以我 就找各种办法,终于 找到 cell可以跟随键盘移动了,也就是说 键盘不会挡住输入框,我采用的是tableviewcontroller    ,只有使用 TableviewController就很容易的实现了我想要的效果。    但是 后来在开发中遇到一个问题  :    因为使用的是UItableviewContrller   当时我们的设计就说 可不可以将下边的按钮审核中 让他的位置固定  ,不随tableview的滚动而滚动,但是我也是尝试了各种的办法,但是还是没有办法实现,所以最后ui妥协了 就让他随位置移动吧 ,因为tableviewcontroller 虽然帮助我们实现了很多的功能,但是 在界面是就比较局限了,远远比不上  uiviewcontroller+tableview  灵活。

 

图3: 最近又要做  类似于  图2 的  图,我终于 还是 不能容忍自己 使用uitableviewcontroller了  所以我还是 试了很多 就是 如图三实现的效果: 当键盘出来的时候 不会挡住uitextfield    不影响用户的体验,那么我是如何实现的呢?

 

 

思路:

uiviewcontroller+uitableview

让tableview  的当前编辑的cell 始终处于  tableview 的中间位置,这样的话就不会被挡住了。当然了    tableview 里边就有相应的方法:

[_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];

是的 使用这个方法就可以了。

 

发上代码:

#pragma mark - 改变tableview的位置(当将要编辑的时候)-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:textField.tag inSection:0]; //将要编辑的textfield 所在的cell 使其滚动到中间的位置 [_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; return YES;}

没错使用这个就可以实现了。是不是感觉很神奇ne 

 

转载于:https://www.cnblogs.com/lishanshan/p/6211606.html

你可能感兴趣的文章
Java基础回顾 —反射机制
查看>>
c# 前台js 调用后台代码
查看>>
2017-02-20 可编辑div中如何在光标位置添加内容
查看>>
$.ajax()方法详解
查看>>
jquery操作select(增加,删除,清空)
查看>>
Sublimetext3安装Emmet插件步骤
查看>>
MySQL配置参数
查看>>
全面理解Java内存模型
查看>>
存储过程
查看>>
生成器
查看>>
将一个数的每一位都取出来的方法!
查看>>
2) 十分钟学会android--建立第一个APP,执行Android程序
查看>>
面试题8:二叉树下的一个节点
查看>>
hash冲突的解决方法
查看>>
Asp.Net webconfig中使用configSections的用法
查看>>
mysql 二进制日志
查看>>
阻止putty变成inactive
查看>>
TP框架代码学习 学习记录 3.2.3
查看>>
doc文档生成带目录的pdf文件方法
查看>>
js数组,在遍历中删除元素(用 for (var i in arr)是无效的 )
查看>>