【发布时间】:2017-10-27 02:10:15
【问题描述】:
假设我的应用中有 2 个文本字段。第一个文本字段用于输入电子邮件(键盘显示),第二个文本字段用于 pin(无需显示键盘)。
当我点击第一个文本字段时,键盘出现,然后我按下第二个文本字段(这将传递给另一个 UI 和控制器)以输入 PIN。所以它在不同的页面上,我使用协议在控制器之间传递值。
我已经实现了 self.view.endEditing(true) 并且如果我按下 UI 中的任意位置以关闭键盘,这将正常工作。
问题是,当我点击第一个文本字段并立即点击第二个而不点击 UI 上的任何地方。第一个文本字段的键盘不会自动关闭并卡在另一个控制器和页面中。
那么如何禁用第二个文本视图的键盘。因为我最终不需要它。
这里的代码很少。
此代码是当我编辑第二个文本字段时自动定位到另一个控制器。
//Implement UITextFieldDelegate
extension LoginViewController: UITextFieldDelegate{
func textFieldDidBeginEditing(_ textField: UITextField) {
let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "EnterMpinViewController") as! EnterMpinViewController
secondViewController.pinProtocol = self
textField.resignFirstResponder()
self.navigationController?.pushViewController(secondViewController, animated: true)
}
【问题讨论】:
-
尝试在第二个视图控制器的视图生命周期方法中调用
self.view.endEditing(true)。 -
在第二个控制器上我不使用 UITextfield,只是 UIlabel 来显示我的 pin
-
self.view.endEditing(true)用于隐藏键盘。
标签: ios swift swift3 uikeyboard