我知道这是一个常见的问题,UITableViewController修复了这个是iPhone SDK 3.0,但是UITableViewController没有按照我的预期工作,可能是因为我正在使用它。这是我的问题:
我正在处理一个表格,该表格位于分组表格中,其中包含一些文本字段。 表格下半部分被键盘遮挡。我知道这是一个古老的问题,并且有一些自动滚动的代码示例,但我还有一些要添加的内容,并且想知道是否有人发现了这个并修复了它。
首先:从3.0开始,如果你的表由UITableViewController控制,你就可以自动滚动。我试过了,确实它确实有效。 但是,我想使用自定义背景图像,UITableViewController不与它一起玩。这就是我所做的:
事实上,桌子显示出我希望它看起来的样子。 但是,当我点击表格中的文本字段时,我没有得到tableViewController旨在免费提供给我的“魔术”滚动。
就目前而言,它与我完全不使用TableViewController的行为完全相同,并将表直接删除到imageView上。 (坦率地说,这样可以减少1个课程,并且更容易阅读代码)。
我引入TableViewController的唯一原因是为了自动滚动。
我有什么遗失的吗?
答案 0 :(得分:1)
调整大小;如果你想要它流畅,那么使用动画块。
[UIView beginAnimations:@"tableAnim" context:nil];
// 214 = keyboard size, adjust it if you have navigation bar or status bar
tableView.frame = CGRectMake(0, 0, 320, 480 - 214);
[UIView commitAnimations];
答案 1 :(得分:0)
如果选择表格中的最后一项,它实际上无法在键盘上滚动,因为没有足够的表格滚动。它会尽可能地滚动,但这可能不足以使所选项目可见。
我所做的是调整桌面大小,使其在键盘上方完全可见。它并不像它应该的那样平滑,但足够好==每个项目都可见。
答案 2 :(得分:0)
(从另一个SO问题重复我的回答):
我个人强烈建议使用Michael Tyson的TPKeyboardAvoiding。
这很容易使用......(引自自述):
要与 UITableViewController 类一起使用,请删除 TPKeyboardAvoidingTableView.m和TPKeyboardAvoidingTableView.h进入 您的项目,并使您的UITableView成为TPKeyboardAvoidingTableView 在xib中。如果您没有在控制器上使用xib,我知道 没有简单的方法使其UITableView成为自定义类:最少的路径 阻力是为它创造一个xib。
对于非 UITableViewControllers ,请删除 TPKeyboardAvoidingScrollView.m和TPKeyboardAvoidingScrollView.h 将源文件导入项目,将UIScrollView弹出到视图中 controller的xib,将滚动视图的类设置为 TPKeyboardAvoidingScrollView,并将所有控件放在其中 滚动视图。您也可以通过编程方式创建它,而无需使用 xib - 只需使用TPKeyboardAvoidingScrollView作为顶级 图。