如何将重点放在文本字段上?

时间:2019-05-16 00:26:46

标签: swift uitextfield focus alert

非常简单的设置:我有一个ViewController场景,上面有一个TextField。 ViewController是文本字段的委托。

我希望具有以下行为:当用户输入文本字段(即在其上点击)时,我想显示一个带有“确定”按钮的模式警报框。用户按下“确定”后,TextField应该获得焦点(即,光标在其中闪烁)。

我无法正常工作。我对用户通过textFieldShouldBeginEditing()在文本字段中点击做出反应。从某种意义上说,我可以在此处显示消息框。但是,在用户(在本例中为我; o)上单击“确定”按钮后,文本字段没有焦点,而当我再次单击它时,消息框将再次出现。

我该如何摆脱呢?

1 个答案:

答案 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
  }
}