textFieldDidEndEditing

textFieldDidEndEditing

我有一个带文本字段的ViewController供用户输入,并在NavigationBar中有一个退出按钮。

通常,用户将文本输入到textField中,然后以textFieldDidEndEditing处理输入。如果在编辑开始之前点击了退出按钮,那么它将正确地选择到父级ViewController。

但是,如果已开始对textField进行编辑,然后单击“退出”按钮,则仍会调用textFieldDidEndEditing,我不想发生这种情况。

我尝试使用textFieldDidEndEditing:reason:,但是在两种情况下返回的原因都是UITextFieldDidEndEditingReasonCommitted。似乎UITextFieldDidEndEditingReasonCancelled仅在tvOS中有效,而在iOS中无效。

我还能如何检测到用户已退出并阻止textFieldDidEndEditing运行到完成?

最佳答案

您不能阻止textFieldDidEndEditing的调用。关闭视图控制器将关闭文本字段。由于不再编辑文本字段,因此将调用委托方法。

您拥有的一种选择是在用户点击“退出”按钮时设置一个标志。然后在textFieldDidEndEditing的实现中,您可以检查该标志是否已设置并采取相应措施。

10-08 17:41