textFieldDidEndEditing解雇“为时已晚”

时间:2012-02-17 02:14:04

标签: ios iphone objective-c uitextfield uitextfielddelegate

我有一个用户输入数据的多视图流程,我将在每一步中将其保存到模型类属性中。

我使用textFieldDidEndEditing检查输入是否有效,如果是,则保存输入的数据。

在视图上我有一个continueButtonClicked事件,它检查所有验证是否通过,如果是,则加载下一个视图。我没有在这里设置模型的属性,因为我认为我不应该这样做,因为每个字段一次都保存到模型1字段。但是,我注意到了一些问题。

如果用户位于文本框内并单击“继续”按钮,则会在textFieldDidEndEditing之前触发continueButtonClicked事件。最终发生的事情是,在textFieldDidEndEditing中发生保存之前,下一个视图将填充“旧”模型。

我错过了什么?在Continue上设置所有属性是否合适?如果我正在为网络编程,那就是我会这样做的,但对于原生应用来说似乎并不合适。

2 个答案:

答案 0 :(得分:4)

您可以在有效的文本字段/文本视图(或所有文本视图)上调用resignFirstResponder,这将触发textFieldDidEndEditing

通常,对于此类文本编辑问题,另一种方法是滥用-textField:shouldChangeCharactersInRange:...委托方法,您可以在其中确定输入的每个字符的新值。如果没有别的办法,你应该只回到这个方法。

答案 1 :(得分:1)

您可以尝试一下,看看是否能解决您的问题?

textFieldShouldEndEditing: