如何在目标c的某些情况下避免额外调用-textFieldDidEndEditing?

时间:2012-08-10 09:46:18

标签: objective-c ios xcode uitextfield custom-cell

我有一个带有textfields的customcells的tableview。我现在面临一个特殊的问题:

  1. 当我点击第一行文本字段时,会调用-beginEditing。
  2. 现在我更改了值,然后点按第二行文本字段。因此,第一行的-didEndEditing被调用。在这个didEnd中,我有一些在其他类中调用的解析方法。但他们现在没有被执行。在didEnd之后,调用第二行文本的-beginEditing。之后解析发生。直到现在,没关系。
  3. 解析完成后,来自解析的对象在其他类中设置,流程应该停在这里,但我不知道从哪里和为什么,第二行的-didEndEditing被调用!此外,虽然任何地方都没有写任何resignfirstresponder,键盘也会被解雇!
  4. 任何线索为什么会发生这种情况以及如何解决?

1 个答案:

答案 0 :(得分:0)

这就是Apple设计系统的方式 - 所有开发人员都必须处理它(对或错)。关键是你被赋予了“textField”属性,因此你知道其中一个textField正在发送委托消息。

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

你可能会破解一个不太优雅但更容易编码的解决方案。在任何情况下,这些消息都有重叠,没有办法避免它。

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