【发布时间】:2020-04-24 20:19:42
【问题描述】:
我有一个UITableView,里面有大约 30 个项目。行高是静态的,根据 tableview 的大小,在任何给定时间大约存在 8 个单元格。每个单元格都有一个UITextField,就是这样。令人困惑的部分是,当我开始编辑时,假设第 0 行单元格中的文本字段。发生的情况是一切都按我预期的那样工作,直到该行滚动不可见(而其文本字段仍然是第一响应者)。我希望下一行的单元格也有一个带有第一响应者状态的文本字段,因为它是刚刚被编辑的单元格,但被回收到另一行——这永远不会发生。
第 0 行的单元格继续保持第一响应者状态。我知道这一点,因为我在一直滚动到底部时继续输入(第一行的单元格通常会在那时被回收),一旦滚动回顶部,我输入的内容在第 0 行的单元格中很明显。
要明确这是我想要的行为,但我没有在任何地方找到它的记录,所以它让我厌倦了依赖它。输入到单元格文本字段中的文本存储为模型的name 属性,如果用户认为他们正在编辑第 0 行的模型名称,但由于未来对 iOS 的更改,就会出现奇怪的行为SDK,他们最终实际上在他们键入时单元格恰好位于的任何行编辑模型的名称。
【问题讨论】:
-
您真的希望用户在文本字段被滚动到视野之外时继续编辑它吗?
-
@DonMag 这不是重点。关键是,在目前的情况下,他们可以——因为 Apple 的
UITableView实现。我不知道为什么用户会这样做,但我的选择是什么?滚动出视图时结束对文本字段的编辑? — 惊喜用户!键盘往下走。也许他们只是向下滚动以检查列表中另一个项目中的文本。也许我们可以在不摆脱键盘的情况下阻止编辑。实现UITextFieldDelegate? -
当然可以,但是当我想要的行为已经明确实现并且我所需要的只是确认它被官方认可时,为什么还要这样做。
-
在滚动时关闭键盘并非没有道理。事实上,有一个专门为此设计的属性:keyboardDismissMode
-
@shoe - 我问了,因为你说 “要明确这是我想要的行为” ...使用应用程序并输入信息会让我感到惊讶进入我看不见的领域。如果这是您想要的行为,我不是在批评,只是在评论。
标签: ios uitableview