swift - '线程 1:致命错误:当我尝试关闭视图中的所有键盘时,在展开可选值时意外发现 nil
问题描述
我在所有对象(如文本字段、选择器..)后面放置了一个全屏大小的不可见按钮来关闭打开的键盘。单击按钮时,我调用以下函数:
func hideKeyboard() {
for view in self.contentViewOutlet.subviews {
if let tField = view as? UITextField {
tField.resignFirstResponder()
}
}
}
但是单击按钮后出现此错误:
线程 1:致命错误:在展开可选值时意外发现 nil
我大致知道这是什么意思,但我无法写出解决方案。(其实这个hideKeyboard()
函数运行的很好,我添加后开始报错UIPickerView
)
解决方案
你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()
}
}
}
之后,如果contentViewOutlet
is ,您的方法将不会做任何事情nil
。
推荐阅读
- javascript - 使用 for of 循环时如何将值传递回生成器函数
- java - Java:如何使用 JavaParser 获取 Java 类的标识符数量
- laravel - Laravel 急切加载 SQL?
- java - 从 Java 调用 Python 脚本。我应该使用 Docker 吗?
- performance - Meltdown 缓解与 `calloc()` 的 CoW“延迟分配”相结合是否意味着 calloc() 分配的内存的性能下降?
- php - NumberFormatter 带单数/复数词
- list - 返回直到元素位置之前属于哪个元素的列表
- c++ - 最后推迟标准输出
- php - 获取woocommerce购物车中最高价格的价值
- python - 用于在迭代期间处理集合修改的 Pythonic 设计