问题描述
由于各种原因,我单独使用UISearchBar来过滤UITableView的内容。过滤效果很好。但是,需要两次轻击才能选择某些内容。第一次点击关闭键盘,然后第二次选择UITableView中的一项。有没有一种方法可以让我一键关闭键盘并选择一个项目?
解决方法
对于UITableView
,您可以使用:
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
superview?.endEditing(true)
}
当拖动表格视图时,这将结束编辑。
从更一般的意义上讲,endEditing(Bool)
函数在UIView
上调用时,会在视图中查看整个子层次结构,并且如果找到编辑文本元素,则会将其辞职。该参数用于确定是应要求视图辞去第一响应者,还是只是被迫辞去视图。
根据文档:“此方法查看当前视图和它的子视图层次结构中当前是第一个响应者的文本字段。如果找到一个,它将要求该文本字段辞职为第一个响应者。设置为true,甚至不会询问该文本字段;它被迫辞职。”
这意味着您可以直接在endEditing(true)
中调用didSelectItemAt
,只需确保在将搜索栏作为子视图的视图上调用即可。或直接在搜索栏上调用它。