非常简单的设置:我有一个ViewController场景,上面有一个TextField。 ViewController是文本字段的委托。
我希望具有以下行为:当用户输入文本字段(即在其上点击)时,我想显示一个带有“确定”按钮的模式警报框。用户按下“确定”后,TextField应该获得焦点(即,光标在其中闪烁)。
我无法正常工作。我对用户通过textFieldShouldBeginEditing()
在文本字段中点击做出反应。从某种意义上说,我可以在此处显示消息框。但是,在用户(在本例中为我; o)上单击“确定”按钮后,文本字段没有焦点,而当我再次单击它时,消息框将再次出现。
我该如何摆脱呢?
答案 0 :(得分:1)
您真的想让模式对话框在每次点击文本字段时显示 吗?请记住,将激活项放在textFieldShouldBeginEditing()
中将意味着在关闭对话框后重新激活该字段将重新显示该对话框。
也许您只需要显示一次对话框?在这种情况下,首次显示时设置的简单布尔标志将解决此问题。即在视图控制器作用域内:
var hasShownWarningDialog = false
,然后实施(在注释之后):
func textFieldShouldBeginEditing(textField: UITextField) -> Bool
{
if !hasShownWarningDialog
{
hasShownWarningDialog = true
// Create dialog here
self.present(alert, animated: true, completion: {self.textField.becomeFirstResponder()})
return false
}
else
{
return true
}
}