0

我有一个带有自定义单元格的表格视图,其中包含文本字段。我现在面临一个特殊的问题:

  1. 当我点击第一行文本字段时, -beginEditing 被调用。
  2. 现在我更改值并点击第二行文本字段。因此,第一行的 -didEndEditing 被调用。在这个 didEnd 中,我有一些在其他类中调用的解析方法。但他们现在没有被执行。在 didEnd 之后,调用第二行文本的 -beginEditing。之后,解析发生。到现在为止,还好。
  3. 解析完成后,解析的对象设置在其他类中,流程应该在这里停止,但我不知道从哪里以及为什么,第二行的 -didEndEditing 被调用!此外,尽管任何 resignfirstresponder 都没有写在任何地方,但键盘会被解雇!

任何线索为什么会发生这种情况以及如何解决它?

4

1 回答 1

0

这就是 Apple 设计系统的方式——所有开发人员都必须处理它(对或错)。关键是您获得了“textField”属性,因此您知道哪个 textField 正在发送委托消息。

解决方案是使用一个或多个可变字典(或某些数据结构)来保持每个单独文本字段的状态。您可以拥有一个使用 textField 对象作为键的主字典,然后为每个 textField 提供一个具有当前状态的字典,以及您想要保留的任何其他信息。

您可能可以破解一个不太优雅但更容易编码的解决方案。在任何情况下,这些消息都存在重叠,无法避免。

编辑:使用标签作为键,或创建一个非保留的 NSValue 指针对象,但不要使用文本字段本身。

于 2012-08-10T12:32:09.180 回答