当用户触发操作表并将其解除时,如何在文本字段上关闭键盘?

时间:2015-03-18 00:31:02

标签: ios xcode swift

我有一个符合UITextFieldDelegate

的UITextField

@IBOutlet weak var myCoolTextField: UITextField!

我还有一个触发操作表的按钮。

@IBAction func myCoolButton(sender: UIButton) {
  let alert = UIAlertController(title: "Hey", message: "Hey there", preferredStyle: .ActionSheet)
  let dismissAction = UIAlertAction(title: "Done", style: .Cancel, handler: nil)
  alert.addAction(dismissAction)
  self.presentViewController(alert, animated: true, completion: nil)
}

如果用户正在编辑myCoolTextField,他们可以点按myCoolButton来解除键盘编辑myCoolTextField,然后UIAlertController接管操作表。当用户取消警报时,键盘会自动弹出并让用户返回编辑myCoolTextField

我如何防止这种情况发生?如果用户在编辑myCoolButton的过程中点击myCoolTextField,然后取消警报,我就不希望myCoolTextField自动返回编辑模式。

我有常规的旧textFieldShouldReturntouchesBegan方法,可用于点击屏幕上的任何其他位置。我已尝试在动作表的完成处理程序的演示中尝试使用方法来结束myCoolTextField的编辑,但它没有做任何事情,因为到那时键盘和文本字段是暂时不活跃。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用resignFirstResponder方法解除键盘:

@IBAction func myCoolButton(sender: UIButton) {
  myCoolTextField.resignFirstResponder()
  let alert = UIAlertController(title: "Hey", message: "Hey there", preferredStyle: .ActionSheet)
  let dismissAction = UIAlertAction(title: "Done", style: .Cancel, handler: nil)
  alert.addAction(dismissAction)
  self.presentViewController(alert, animated: true, completion: nil)
}