UISearchController搜索栏无法获得焦点

时间:2016-01-26 12:25:22

标签: ios swift cocoa-touch

在我的项目中,如果第二次将控制器(包含UISearchController)推送到导航堆栈,搜索栏似乎无法获得焦点。以下GIF重新编码演示了我所说的内容:

As you can see, when search screen is pushed to the navigation stack the second time, I can't tap in the search bar

正如您所看到的,当搜索屏幕第二次被推到导航堆栈时(通过点击放大镜),我无法再点击搜索栏。

重现问题的代码:如果您想查看代码,可以download the minimal project

2 个答案:

答案 0 :(得分:3)

您需要设置UISearchControllerDelegate

    class SearchController: UITableViewController, UISearchControllerDelegate, UISearchBarDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()

        searchController = UISearchController(searchResultsController: nil)
        searchController.delegate = self
        searchController.searchBar.delegate = self

        self.definesPresentationContext = false
    }
故事板中的

还需要将“显示推送”中的segue更改为“显示替换”

或者使用扩展程序,但酷孩子现在正在这样做。

答案 1 :(得分:0)

尝试一下

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    self.definesPresentationContext = YES;
 }

- (void)viewDidDisappear:(BOOL)animated {
    self.definesPresentationContext = NO;
    [super viewDidDisappear:animated];
 }

对我来说很好,但是不确定是否是一个好的解决方案?