退出viewController时停止调用textFieldDidEndEditing

时间:2019-01-26 16:06:49

标签: ios objective-c

我有一个ViewController,带有一个TextField供用户输入,并在NavigationBar中有一个Quit按钮。

通常,用户将文本输入到textField中,然后在textFieldDidEndEditing中处理输入。如果在开始编辑之前点击了“退出”按钮,则它会正确地与父级ViewController联系。

但是,如果已经在textField上开始编辑,然后点击了Quit(退出)按钮,则仍会调用textFieldDidEndEditing,我不想发生这种情况。

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

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

1 个答案:

答案 0 :(得分:1)

您无法阻止调用self.QSModel.setHorizontalHeaderItem(index.column() + 1, QStandardItem('XXX')) 。关闭视图控制器将关闭文本字段。由于不再编辑文本字段,因此将调用委托方法。

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