读书人

为何小弟我的 UITableView 不能自动处

发布时间: 2012-06-20 20:37:21 作者: rapoo

为何我的 UITableView 不能自动处理软键盘遮挡问题

这几天一直被这个问题所困扰 ......


我的一个应用了使用了 UITableView,当我在位于屏幕下半部分的 cell 单元中输入数据时,系统弹出的软键盘会把当前在操作的 cell单元遮挡住,这也就是所谓的软键盘遮挡问题,上网找了资料,有许多解决办法,这里就不一一列举了,我选择了苹果官方的提供的方法,参考地址:点击打开链接。问题似乎解决了,但是后来我发现别人的代码确不需要做任何处理,他的 UITableView 就能够很好的自动处理软键盘遮挡问题,而我参照官方提供的范例,又是注册消息,又是计算 UITableView 的 frame,然后再来执行 UITableView 的 scrollRectToVisible 方法来滚动,所有的动作都要自行处理,繁琐!


我找遍了所有关于 UITableView 的属性设置,对照者别人的代码逐项检查,都没有发现问题在哪?没法办法,只好另外新建一个 UITableViewControll,然后测试一下这个新建的会不会也能自动处理遮挡问题,结果发现我自己新建的 UITableViewControll 里的 UITableView 果然也一样无需任何代码均可以自动处理遮挡问题,看来问题就是出在我自己写的 UITableViewController 上了(我把UITableViewController的class指向了自己定义的控制类,而我新建的默认是指向系统的 UITableViewController),通过检查代码,我怀疑可能是因为我自己写的 TableViewController 类重载了 viewWillAppear ,在代码中没有调用 [super viewWillAppear],把这句加上问题解决了,终于解开疑团!


- (void)viewWillAppear:(BOOL)animated

{

[super viewWillAppear:animated]; // 这句话很重要


......



要不就不要重载这个方法,重载了就一定要记得补上上面这句。

读书人网 >移动开发

热点推荐