首先附上我项目中用曾经用到的几张图 并说明一下个人用法:ios
图1:iview
图2:ui
图3:spa
心在你我说一下 我当初的实现 方法 ,但愿能给大家一些 启示设计
图1: 我采用的是最简单的方法 由于cell的个数比较少 而且不会出现键盘把cell挡住的状况 因此我直接就是用的 view 上边加 label +textfield 虽然代码很繁琐 可是 仍是实现了基本的效果code
图2:因为这个cellde 个数比较多 再使用 view+label+textfield的方法 就不现实了, 因此我 就找各类办法,终于 找到 cell能够跟随键盘移动了,也就是说 键盘不会挡住输入框,我采用的是tableviewcontroller ,只有使用 TableviewController就很容易的实现了我想要的效果。 可是 后来在开发中遇到一个问题 : 由于使用的是UItableviewContrller 当时咱们的设计就说 可不能够将下边的按钮审核中 让他的位置固定 ,不随tableview的滚动而滚动,可是我也是尝试了各类的办法,可是仍是没有办法实现,因此最后ui妥协了 就让他随位置移动吧 ,由于tableviewcontroller 虽然帮助咱们实现了不少的功能,可是 在界面是就比较局限了,远远比不上 uiviewcontroller+tableview 灵活。blog
图3: 最近又要作 相似于 图2 的 图,我终于 仍是 不能容忍本身 使用uitableviewcontroller了 因此我仍是 试了不少 就是 如图三实现的效果: 当键盘出来的时候 不会挡住uitextfield 不影响用户的体验,那么我是如何实现的呢?开发
思路:it
uiviewcontroller+uitableviewio
让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