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