ios - 如何在不选择表格 View 的单元格的情况下将搜索栏作为第一响应者辞职?

标签 ios swift tableview uisearchbar

我有一个表格 View ,上面有一个搜索栏。我想实现以下行为:当点击搜索栏然后用户点击其他任何地方时,搜索栏不再是第一响应者(隐藏键盘),但与此同时,表格 View 的单元格是没有被选中。我不使用其他 View 进行搜索。这是我的带有搜索栏的表格 View 的样子(我知道,当我在模拟器上运行我的项目时,表格 View 的分隔符有问题。无法弄清楚原因):

enter image description here

目前,当我点击其他地方时,搜索栏不再是第一响应者,但问题是,单元格也会被选中。那没关系,但有时,当我有更复杂的单元格(不像图像中的单元格)时, View 之间的过渡不是很平滑。如果您知道如何使过渡顺利进行,那也没关系,或者,我将不胜感激关于实现上述行为的任何建议。

最佳答案

在您的表格 View 上放置一个 UITapGestureRecognizer 以响应点击。

默认情况下将点击识别器设置为禁用。

tapRecognizer.isEnabled = false

当搜索栏激活时,重新启用点击识别器。

tapRecognizer.isEnabled = false

当它识别出点击时,通过退出搜索栏的第一响应者来关闭键盘。还要确保禁用点击识别器,以便您可以像往常一样选择表格 View 单元格。

@objc private func handleTap(recognizer: UITapGestureRecognizer) {
    searchBar.resignFirstResponder()
    recognizer.isEnabled = false
}

关于ios - 如何在不选择表格 View 的单元格的情况下将搜索栏作为第一响应者辞职?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47238370/

相关文章:

ios - 您可以使用 API 获取您的 Twitter 电子邮件吗?

ios - 使用callkit接听电话后如何打开in Call UI

swift - Swift 中 “+=” 运算符的内存安全

iphone - 最后一个 TableView 单元格不工作

java - 将整数(非字符串)数据插入 JavaFX2 TableView

ios - 使 AppDelegate 接收来自自定义库的回调事件

ios - 从 URLSession Completion Handler 函数返回字符串 Swift 3

swift - 带小数的 UIStepper

JavaFX 两个 TableView 之间的单选

ios - iOS-在录制视频的同时播放音频/声音