假设我的应用程序中有 2 个文本字段。第一个文本字段用于输入电子邮件(显示键盘),第二个文本字段用于输入密码(无需显示键盘)。
当我点击第一个文本字段时,键盘出现,接下来我按下第二个文本字段(这将传递给另一个 UI 和 Controller )以输入 PIN。所以它在不同的页面上,我使用协议(protocol)在 Controller 之间传递值。
我已经实现了 self.view.endEditing(true),如果我在 UI 中的任何地方按下以关闭键盘,它就可以正常工作。
问题是,当我点击第一个文本字段并立即点击第二个文本字段时,没有点击 UI 上的任何地方。来自第一个文本字段的键盘不会自动关闭并卡在另一个 Controller 和页面中。
那么如何禁用第二个 TextView 的键盘。因为我最终不需要它。
这里有一些代码。
此代码是当我编辑第二个文本字段时自动定位到另一个 Controller 。
//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)
}
最佳答案
实现 UITextField Delegate 方法并在文本字段是您的另一个文本字段时返回 false
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
if textField == yourAnotherTextFiled {
return false
}
return true
}
关于ios - 点击另一个 UITextField 后自动禁用键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44197217/