编辑UITextField(在UITableViewCell中)时,为什么UITableView不会"自动滚动"?(苹果手机)

The*_*imp 4 iphone uitableview uitextfield uikeyboard

我创建了一个UITableView类型UITableViewStyleGrouped.然后我创建了几个不同的部分,每个部分都有几行.在每个行中,我创建了一个UITableViewCell包含a 的自定义UITextField.我也有一个UITableViewCell包含一个UITextView.

我还实现了一个允许用户通过按下上一个下一个来移动的UIToolbar顶部.UIKeyboardUITextField

我遇到的问题有两个:

  1. 我需要UITableView进行滚动,以便当下一个UITextField(或UITextView)成为第一个响应者时它是可见的(即使显示键盘).
  2. 当一个UITextField(或UITextView)被选择(不使用先前的下一个按钮)被应调整使得场是键盘上方可见.

我已经浏览了很多不同的教程,但是没有一个能解决我的问题.您可以提供的任何帮助将非常感激.

附加信息:

100%肯定我的应用程序曾经自动完成上述所有操作,但是我现在似乎停止了这样做,我不明白为什么.是否有可能发生这种情况?是否有一些我可能已经改变的功能或某些东西会破坏这种行为?

ade*_*der 14

现在可能对原版海报毫无用处,但那些曾经有过类似问题的人曾经做过工作然后就停止了...

检查你没有:

- (void)viewWillAppear:(BOOL)animated
Run Code Online (Sandbox Code Playgroud)

在你的UITableViewController子类中!

在UITableViewController中使用viewWillAppear会破坏"自动化tableView在键盘出现时向上滚动"的行为.

我只是通过艰苦地比较一个旧版本的项目与我最新的源码停止工作来找到这个.

  • 谢谢你!我们遇到了同样的事情; 它工作,然后它没有工作,也看不出原因.要详细说明您的答案,您仍然可以覆盖viewWillAppear:方法并通过在您自己的viewWillAppear:方法中调用[super viewWillAppear:animated]来保持自动滚动. (11认同)
  • 从文档中:"在接收者的视图即将添加到视图层次结构之前以及在配置任何动画以显示视图之前调用此方法.您可以覆盖此方法以执行与显示视图相关联的自定义任务.例如,您可以使用此方法更改状态栏的方向或样式,以便与显示的视图的方向或样式相协调.**如果重写此方法,则必须在实现中的某个时刻调用super.**" (2认同)