选择uitableview单元格并使用UISearchController

时间:2016-06-08 19:36:57

标签: ios swift uitableview resignfirstresponder

所以我有一个应用程序,它基本上是一个使用UITableViewController和UISearchController显示的电影搜索应用程序。

我有一个单元格,在点击时会加载更多结果。但是当我点击它时,我也想让键盘消失。所以在tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)方法中,我假设我必须调用resignFirstResponder()。问题是它不起作用。我已经尝试了一切,但没有什么能让键盘消失。我认为这是因为键盘是UISearchBar的一部分,我应该调用searchBar.resignFirstResponder()。问题是我无法从UITableViewController类访问searchBar。

这就是我所拥有的,这一切都不起作用:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        //Remove Keyboard
            self.resignFirstResponder()
            self.view.resignFirstResponder()
            self.view.endEditing(true)
            self.tableView.endEditing(true)
            self.navigationController?.view.endEditing(true)
            self.navigationController?.resignFirstResponder()

        //Do a bunch of other stuff..
}

2 个答案:

答案 0 :(得分:1)

如果你知道searchBar是第一个响应者,那么:

  1. 将对searchBar的引用传递给UITableViewController
  2. 使用KVC:发布通知您正在加载更多结果,并且应隐藏键盘,并在UISeachController中收听该通知。

答案 1 :(得分:0)

[[UIApplication sharedApplication]sendAction:@selector(resignFirstResponder)
                                                 to:nil
                                               from:nil
                                           forEvent:nil];