如何在快速在 textFieldDidBeginEditing 委托上呈现另一个视图控制器时隐藏键盘?

Posted

技术标签:

【中文标题】如何在快速在 textFieldDidBeginEditing 委托上呈现另一个视图控制器时隐藏键盘?【英文标题】:How to hide the keyboard while presenting another viewcontroller on textFieldDidBeginEditing delegate in swift? 【发布时间】:2020-11-04 09:38:38 【问题描述】:

我有两个文本字段,一个用于文件名,另一个用于从另一个视图控制器中选择选项。我使用第二个文本字段作为下拉菜单。问题是,当我点击第一个文本字段,然后点击第二个文本字段时,键盘没有隐藏。

func textFieldDidBeginEditing(_ textField: UITextField) 
    if textField == "fileUserCan" 
        textField.endEditing(true)
        guard  let controller = UIStoryboard(name: "DownloadView", bundle: nil).instantiateViewController(withIdentifier: "DonwloadViewVC") as? ViewDownloadViewController else return
        controller.modalPresentationStyle = .overFullScreen
        controller.modalTransitionStyle = .crossDissolve

        controller.callback =  check in
            self.dismiss(animated: false, completion: nil)
            if check == 1 
                textField.text = "download"
             else 
                textField.text = "file"
            
        
        textField.endEditing(true)
        self.present(controller , animated: true)

    

【问题讨论】:

使用 textfield.resignFirstResponder() 只有在我只点击第二个文本字段时才有效 你也将它与 textFieldDidEndEditing 结合使用? 你能用代码指定吗 【参考方案1】:

你可以为第一个文本字段指定一个标签。

如果你这样做了,你可以这样做:

 func textFieldDidEndEditing(_ textField: UITextField) 
    if textField.tag == 1 
       textfield.resignFirstResponder()
    
 

【讨论】:

当我来自第一个文本字段时,键盘仍处于打开状态 用第二个文本字段试试上面的代码。我相信第一个键盘已经关闭,但是只要你按下第二个文本字段,就会直接调用一个新键盘。

以上是关于如何在快速在 textFieldDidBeginEditing 委托上呈现另一个视图控制器时隐藏键盘?的主要内容,如果未能解决你的问题,请参考以下文章

如何在生产中设置快速会话。快速会话在 https 中不起作用

您如何在中间位置实现枢轴快速排序,这种变化称为啥? [关闭]

如何快速将数组保存在文件中?

xshell如何将快捷命令添加到快速命令集

如何在颤动中快速访问相机帧

Html5如何快速在页面中写出多个轮播图效果