【问题标题】:Dismiss keyboard on tapping textfield在点击文本字段时关闭键盘
【发布时间】:2021-03-24 21:35:18
【问题描述】:
我有一个可以编辑的文本字段。在此文本字段下方,我有另一个文本字段,点击它可以转到另一个屏幕。
当我点击第一个文本字段时,键盘会出现。但是当我点击第二个文本字段时,键盘仍然存在(可能是因为它也是一个文本字段)。但我希望键盘在我点击第二个文本字段时关闭。
我正在使用IQKeyboardManager。
这就是我所拥有的……但它不起作用……
@IBAction func secondTextfield_Clicked(_ sender: Any) {
(sender as! UITextField).resignFirstResponder()
self.performSegue(withIdentifier: "mySegue", sender: nil)
}
【问题讨论】:
标签:
ios
swift
iqkeyboardmanager
【解决方案1】:
首先,您需要将委托设置为第二个文本字段并实现textFieldShouldBeginEditing 委托方法。
secondTextField.delegate = self
在以下委托方法中,您可以检查文本字段并根据您的文本字段返回真/假。
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
view.endEditing(true) //with will end editing for the view
if textField == secondTextField {
self.performSegue(withIdentifier: "mySegue", sender: nil)
return false
}
return true
}
通过为 secondTextField 返回 false,将不会为第二个文本字段打开键盘。
【解决方案2】:
首先,您为什么要使用文本字段转到另一个页面?
你为什么不直接使用按钮
第二件事,如果你愿意,你可以这样做:
override func viewDidLoad() {
super.viewDidLoad()
...
secondTF.delegate = self
...
}
并在代码中的任何位置调用此函数:
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
view.endEditing(true)
if textField == secondTF {
// Navigate to the second VC with using storyBoard or navigationController
return false
}
return true
}