以编程方式快速从所有视图层次结构中关闭键盘

Posted

技术标签:

【中文标题】以编程方式快速从所有视图层次结构中关闭键盘【英文标题】:dismiss keyboard from all view hierarchy programmatically in swift 【发布时间】:2020-10-21 02:33:35 【问题描述】:

我有如下图所示的视图控制器。

当我触摸文本字段时,键盘会出现。 我想在任何屏幕上点击、拖动时关闭键盘。

我试图把这段代码放到viewcontroller中,但是没有用。

    func dismissKey() 
    let tap: UITapGestureRecognizer = UITapGestureRecognizer( target: self, action: #selector(dismissKeyboard))
    tap.cancelsTouchesInView = false
    addGestureRecognizer(tap)


@objc func dismissKeyboard() 
    endEditing(true)
    resignFirstResponder()

但如果我将此代码放在自定义单元格类型 1 中,则只有在我点击此单元格时才会关闭键盘。

当我触摸任何屏幕时如何关闭键盘?

【问题讨论】:

【参考方案1】:

如果您尝试关闭UIViewController 中的键盘,请尝试:

@objc func dismissKeyboard() 
    view.endEditing(true)
    resignFirstResponder()

【讨论】:

我应该把这段代码放在哪里?在哪个级别?比较我的代码,我看不出有什么不同。 view.endEditing(true) 在您的视图控制器中。

以上是关于以编程方式快速从所有视图层次结构中关闭键盘的主要内容,如果未能解决你的问题,请参考以下文章

iOS - UITextView 在情节提要中关闭键盘

发出警报后,我无法在我的反应本机应用程序中关闭我的键盘

从 uitableviewcell 内的文本字段中关闭 iPad 上的键盘

无法在 Interface Builder 中关闭键盘,因为视图控制器不会显示 doneEditing:

键盘不会在应用程序中关闭

在 UIViewController 中关闭键盘