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

时间:2012-02-12 14:36:22

标签: iphone uitableview uitextfield uikeyboard

我创建了一个类型为UITableView的{​​{1}}。然后我创建了几个不同的部分,每个部分都有几行。在每个行中,我创建了一个包含UITableViewStyleGrouped的自定义UITableViewCell。我还有一个UITextField,其中包含UITableViewCell

我还在UITextView上方显示了UIToolbar,允许用户按上一页UIKeyboard移动UITextField下一步

我遇到的问题有两个方面:

  1. 我需要滚动UITableView,以便当下一个UITextField(或UITextView)成为第一个响应者时,它是可见的(即使显示键盘)。
  2. 选择UITextField(或UITextView)时(不使用上一个下一个按钮)应进行调整,以便该字段在键盘上方可见。
  3. 我已经浏览了很多不同的教程,但是没有一个能解决我的问题。您可以提供的任何帮助都将非常感激。

    附加信息:

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

3 个答案:

答案 0 :(得分:14)

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

检查你没有:

- (void)viewWillAppear:(BOOL)animated

在你的UITableViewController子类中!!!

在UITableViewController中使用viewWillAppear会破坏“自动化tableView在键盘出现时向上滚动”行为。

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

答案 1 :(得分:4)

查看来自apple的TaggedLocations示例代码。没有任何额外的操作,它做同样的事情。

关键是你的viewcontrollers遵循标准。即你是 NOT 在UIViewController中有容器视图控制器,如UINavigationController。

答案 2 :(得分:-5)

你必须以编程方式更新tableview框架... 并且我100%确定,如果您100%确定您的应用曾经自动执行以上所有操作...而不是您的应用。

检查文档..链接

https://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/ManageTextFieldTextViews/ManageTextFieldTextViews.html#//apple_ref/doc/uid/TP40009542-CH10-SW1

您必须注册键盘通知..然后更新您的tableview框架。 对于下一个和上一个..你必须以编程方式检查哪个文本字段变为活动状态..然后相应地设置框架。