如何在分配第一响应者时正确移动滚动视图?

时间:2012-06-27 15:14:21

标签: objective-c ios xcode uiscrollview

我在UIView中有一个表单,其中包含多个文本字段,一对textview和两个字段,这些字段通过覆盖在其上的隐形按钮进行交互。单击文本字段时,弹出键盘输入文本,我在其上添加了一个工具栏,用于导航到上一个和下一个数据条目(无论数据条目是什么,无论是文本字段,textview还是两个特殊情况之一与按钮互动)。现在,当我在带有这些按钮的文本字段之间导航时,一切正常。我的scrollview的内容沿着成为第一个响应者的元素移动(在stackoverflow的一段代码的帮助下滚动视图,同时考虑隐藏其中很大一部分的键盘的高度)。这是一个视觉示例。

Here is a visual example

当我想要切换出与隐藏按钮交互的特定数据条目(日期)时,会出现问题。我先给出一些背景信息。这些数据条目在操作表中显示了日期选择器(一个用于日期,另一个用于时间),这些操作表也在工具栏中有导航按钮,如此。

like so

来自stackoverflow的重新调整视图的代码在textfields和textviews的didBeginEditing委托方法中这样做,因此当我为它们分配第一个响应者时,scrollview会在考虑键盘的同时自行调整。

这意味着,在我切换到特殊数据条目的情况下,我手动移动scrollview的内容,以便我可以查看下一个元素。当我从特殊条目切换到文本字段时,我假设前面提到的stackoverflow代码启动并调整视图。当我从小时数据条目(使用动作表中的日期选择器)移动到下一个文本字段元素时,它实际上会这样做。但是,当我在日期数据输入(直接在小时数据输入之前)并按下前一个将第一个响应者分配到它上面的文本字段时,滚动视图就会超出文本字段,就像这样。

bug

需要注意的重要一点是,仅当文本字段不在视图中时才会出现此问题。这让我怀疑我错误地使用了重新调整视图的代码。例如,代码中有一个表示键盘高度的常量。我尝试将它从216更改为260(因此它考虑了我在键盘顶部添加的工具栏),但这会导致在按钮附近偶尔出现的奇怪的黑色文物。

我有点迷失在这个错误中,我的帖子已经很长了。我已经在一个新项目中准备了一个我的问题的例子,如果你们中的任何人都可以看一下我会非常感激。 Here it is

0 个答案:

没有答案