我有一个带文本字段的ViewController供用户输入,并在NavigationBar中有一个退出按钮。
通常,用户将文本输入到textField中,然后以textFieldDidEndEditing
处理输入。如果在编辑开始之前点击了退出按钮,那么它将正确地选择到父级ViewController。
但是,如果已开始对textField进行编辑,然后单击“退出”按钮,则仍会调用textFieldDidEndEditing
,我不想发生这种情况。
我尝试使用textFieldDidEndEditing:reason:
,但是在两种情况下返回的原因都是UITextFieldDidEndEditingReasonCommitted
。似乎UITextFieldDidEndEditingReasonCancelled
仅在tvOS中有效,而在iOS中无效。
我还能如何检测到用户已退出并阻止textFieldDidEndEditing
运行到完成?
最佳答案
您不能阻止textFieldDidEndEditing
的调用。关闭视图控制器将关闭文本字段。由于不再编辑文本字段,因此将调用委托方法。
您拥有的一种选择是在用户点击“退出”按钮时设置一个标志。然后在textFieldDidEndEditing
的实现中,您可以检查该标志是否已设置并采取相应措施。