在点击文本字段时关闭键盘

Dismiss keyboard on tapping textfield

我有一个可以编辑的文本框。在这个文本字段下方,我有另一个文本字段,点击它我会转到另一个屏幕。

当我点击第一个文本字段时,键盘出现。但是当我点击第二个文本字段时,键盘仍然存在(可能是因为它也是一个文本字段)。但我希望键盘在我点击第二个文本字段时关闭。

我正在使用 IQKeyboardManager

这就是我的..但它不起作用...

@IBAction func secondTextfield_Clicked(_ sender: Any) {
        (sender as! UITextField).resignFirstResponder()
         
        self.performSegue(withIdentifier: "mySegue", sender: nil)
}

首先,您需要将委托设置为第二个文本字段并实施 textFieldShouldBeginEditing 委托方法。

secondTextField.delegate = self 

在下面的委托方法中,您可以根据您的文本字段检查文本字段和 return true/false。

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
}

通过 return 将第二个文本字段设置为 false,将不会为第二个文本字段打开键盘。

首先你为什么要使用文本框去另一个页面? 你为什么不直接使用按钮 第二件事,如果你愿意,你可以这样做:

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
}