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

How to give the focus to the text field?

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

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

我无法正常工作。我通过 textFieldShouldBeginEditing() 对用户点击文本字段做出反应。这在我可以在那里显示消息框的意义上起作用。但是在用户(在本例中是我 ;o))点击确定按钮后,文本字段没有焦点,当我再次点击它时,消息框再次出现。

我怎样才能摆脱这个?

真的希望模式对话框显示每次 单击文本字段吗?请记住,将激活放在 textFieldShouldBeginEditing() 中意味着 re-activating 关闭对话框后的字段将 re-show 对话框。

也许您只需要显示一次对话框?在这种情况下,在第一次显示时设置一个简单的布尔标志将解决这个问题。 IE。在视图控制器范围内:

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