我有一个ViewController,带有一个TextField供用户输入,并在NavigationBar中有一个Quit按钮。
通常,用户将文本输入到textField中,然后在textFieldDidEndEditing
中处理输入。如果在开始编辑之前点击了“退出”按钮,则它会正确地与父级ViewController联系。
但是,如果已经在textField上开始编辑,然后点击了Quit(退出)按钮,则仍会调用textFieldDidEndEditing
,我不想发生这种情况。
我尝试使用textFieldDidEndEditing:reason:
,但是在两种情况下返回的原因都是UITextFieldDidEndEditingReasonCommitted
。看来UITextFieldDidEndEditingReasonCancelled
仅在tvOS中有效,而在iOS中无效。
我还能如何检测到用户已退出并阻止textFieldDidEndEditing
运行到完成?
答案 0 :(得分:1)
您无法阻止调用self.QSModel.setHorizontalHeaderItem(index.column() + 1, QStandardItem('XXX'))
。关闭视图控制器将关闭文本字段。由于不再编辑文本字段,因此将调用委托方法。
您拥有的一个选项是在用户点击“退出”按钮时设置一个标志。然后,在实现textFieldDidEndEditing
的过程中,您可以检查该标志是否已设置并采取相应措施。