另一个采取“键盘掩盖UITextField”的问题

时间:2010-01-09 18:17:04

标签: iphone scroll uitextfield uitableview

我知道这是一个常见的问题,UITableViewController修复了这个是iPhone SDK 3.0,但是UITableViewController没有按照我的预期工作,可能是因为我正在使用它。这是我的问题:

我正在处理一个表格,该表格位于分组表格中,其中包含一些文本字段。 表格下半部分被键盘遮挡。我知道这是一个古老的问题,并且有一些自动滚动的代码示例,但我还有一些要添加的内容,并且想知道是否有人发现了这个并修复了它。

首先:从3.0开始,如果你的表由UITableViewController控制,你就可以自动滚动。我试过了,确实它确实有效。 但是,我想使用自定义背景图像,UITableViewController不与它一起玩。这就是我所做的:

  1. 使用普通视图创建XIB,上面有图像。
  2. 同样在XIB中,我有一个UIViewController(实际上是我编写数据源方法的一个我自己的子类),它有表。
  3. 在我的主视图viewDidLoadMethod我试过这个: tableViewController.view.backgroundColor = [UIColor clearColor]; [self.view addSubview:tableViewController.view];
  4. 事实上,桌子显示出我希望它看起来的样子。 但是,当我点击表格中的文本字段时,我没有得到tableViewController旨在免费提供给我的“魔术”滚动。

    就目前而言,它与我完全不使用TableViewController的行为完全相同,并将表直接删除到imageView上。 (坦率地说,这样可以减少1个课程,并且更容易阅读代码)。

    我引入TableViewController的唯一原因是为了自动滚动。

    我有什么遗失的吗?

3 个答案:

答案 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作为顶级   图。