UISearchBar 在尝试选择 UICollectionViewCell 时退出第一响应者

Posted

技术标签:

【中文标题】UISearchBar 在尝试选择 UICollectionViewCell 时退出第一响应者【英文标题】:UISearchBar resigns first responder when trying to select UICollectionViewCell 【发布时间】:2017-03-30 01:19:28 【问题描述】:

我有一个UIViewController,用作共享抽屉,从屏幕底部向上滑动。

我在它下面有一个UISearchBarUICollectionView,在搜索栏中输入更新集合视图没有问题。

当搜索栏处于活动状态时,我希望能够在集合视图中选择单元格。但是,每当我点击搜索栏以外的任何内容时,都会关闭键盘。我习惯于添加UITapGestureRecognizer 或手动调用searchBar.resignFirstResponder(),但在这种情况下,我无法弄清楚如何不关闭键盘。

视图控制器上没有其他手势识别器。在键盘存在时允许(多个)选择集合视图有什么想法吗?

【问题讨论】:

你实现textFieldShouldReturn方法了吗? 【参考方案1】:

@nayem 的评论让我想到了searchBarShouldEndEditing 委托方法。搜索栏确实在resigningFirstResponder 之前发送此消息,我可以返回false。问题解决了。

【讨论】:

【参考方案2】:

取消隐藏键盘

self.view.endEditing(false)

你在找这个吗?


resignFirstResponder

你不能传递一个布尔值来隐藏或取消隐藏



我们也可以通过以下方法做到这一点,始终以编程方式将取消按钮添加到搜索栏

    func searchBarTextDidBeginEditing(searchBar: UISearchBar) 
        searchBar.showsCancelButton = true;
    

另外,应该尝试将搜索栏的 IBOutlet 删除为:

self.yourSearchBar.endEditing(false)

注意:yourSearchBar 是删除 IBOutlet 时提供的搜索栏名称。

【讨论】:

不...看来视图控制器正在自动发送该消息,我无法阻止它。 你能分享你在控制器故事板中使用的层次结构的截图 @Raesu 请检查更新的答案并允许我深入挖掘。

以上是关于UISearchBar 在尝试选择 UICollectionViewCell 时退出第一响应者的主要内容,如果未能解决你的问题,请参考以下文章

通过 UISearchBar 使用 CoreData 过滤查询

动态更改 UISearchBar 的键盘类型

在 iOS7 中移除 UISearchBar 的边框

选择标签栏项目时激活 UISearchBar - 帮助还是阻碍?

将动态类型添加到 UISearchBar

UICollectionView insertSections 错误 - NSInvalidArgumentException 原因 setObjectForKey 对象不能为 nil UIColle