首页 > 解决方案 > '线程 1:致命错误:当我尝试关闭视图中的所有键盘时,在展开可选值时意外发现 nil

问题描述

我在所有对象(如文本字段、选择器..)后面放置了一个全屏大小的不可见按钮来关闭打开的键盘。单击按钮时,我调用以下函数:

func hideKeyboard() {
    for view in self.contentViewOutlet.subviews {
        if let tField = view as? UITextField {
            tField.resignFirstResponder()
        }
    }
}

但是单击按钮后出现此错误:

线程 1:致命错误:在展开可选值时意外发现 nil

我大致知道这是什么意思,但我无法写出解决方案。(其实这个hideKeyboard()函数运行的很好,我添加后开始报错UIPickerView

标签: swiftxcode

解决方案


contentViewOutlet是一个Outlet所以它可能是零,但它是隐式展开的。你会得到这个错误,因为当你点击一个按钮时,这个对象是nil. 为避免崩溃,请将代码更改为

func hideKeyboard() {
    guard let contentView = self.contentViewOutlet else { return }
    for view in contentView.subviews {
        if let tField = view as? UITextField {
            tField.resignFirstResponder()
        }
    }
}

之后,如果contentViewOutletis ,您的方法将不会做任何事情nil


推荐阅读