我有一个用户输入数据的多视图流程,我将在每一步中将其保存到模型类属性中。
我使用textFieldDidEndEditing
检查输入是否有效,如果是,则保存输入的数据。
在视图上我有一个continueButtonClicked事件,它检查所有验证是否通过,如果是,则加载下一个视图。我没有在这里设置模型的属性,因为我认为我不应该这样做,因为每个字段一次都保存到模型1字段。但是,我注意到了一些问题。
如果用户位于文本框内并单击“继续”按钮,则会在textFieldDidEndEditing
之前触发continueButtonClicked事件。最终发生的事情是,在textFieldDidEndEditing
中发生保存之前,下一个视图将填充“旧”模型。
我错过了什么?在Continue上设置所有属性是否合适?如果我正在为网络编程,那就是我会这样做的,但对于原生应用来说似乎并不合适。
答案 0 :(得分:4)
您可以在有效的文本字段/文本视图(或所有文本视图)上调用resignFirstResponder
,这将触发textFieldDidEndEditing
。
通常,对于此类文本编辑问题,另一种方法是滥用-textField:shouldChangeCharactersInRange:...
委托方法,您可以在其中确定输入的每个字符的新值。如果没有别的办法,你应该只回到这个方法。
答案 1 :(得分:1)
您可以尝试一下,看看是否能解决您的问题?
textFieldShouldEndEditing: