我在 UIView 中有一个表单,它由多个文本字段、几个文本视图和两个字段组成,它们通过覆盖在它们上面的不可见按钮进行交互。当您单击文本字段时,会弹出键盘进行文本输入,我在其上添加了一个工具栏,用于导航到上一个和下一个数据输入(无论数据输入是什么,无论是文本字段、文本视图还是两种特殊情况之一与按钮交互的)。现在,当我使用这些按钮在文本字段之间导航时,一切正常。我的滚动视图的内容沿着成为第一个响应者的元素移动(借助 stackoverflow 中的一段代码滚动视图,同时考虑到隐藏了很大一部分的键盘高度)。这是一个视觉示例。
当我想退出与隐藏按钮交互的特定数据条目(日期)时,就会出现问题。我先给出一些背景。这些数据条目在操作表中显示日期选择器(一个用于日期,另一个用于时间),并且这些操作表在工具栏中也有导航按钮,就像这样。
来自stackoverflow的重新调整视图的代码在文本字段和文本视图的didBeginEditing委托方法中执行此操作,因此当我将它们分配给第一响应者时,滚动视图会在考虑键盘的同时自行调整。
这意味着,在我切换到特殊数据条目的情况下,我手动移动滚动视图的内容,以便查看下一个元素。当我从特殊条目切换到文本字段时,我假设前面提到的来自 stackoverflow 的代码会启动并调整视图。当我从小时数据输入(在操作表中使用日期选择器)移动到下一个元素(即文本字段)时,它实际上会这样做。但是,当我在日期数据输入(直接在小时数据输入之前)并按上一个以将第一响应者分配给其上方的文本字段时,滚动视图会在文本字段之前进行,就像这样。
需要注意的重要一点是,仅当文本字段不在视图中时才会出现此问题。这让我怀疑我错误地使用了重新调整视图的代码。例如,代码中有一个表示键盘高度的常量。我尝试将其从 216 更改为 260(因此它考虑到我在键盘顶部添加的工具栏),但这会导致按钮附近出现奇怪的黑色伪影,这种伪影只是偶尔出现。
我有点迷失在这个错误中,我的帖子已经很长了。我已经在一个新项目中准备了一个我的问题的例子,如果你们中的任何人都可以看看它,我会非常感激。 这里是