【问题标题】:UISearchController Needs an extra tap to become first responderUISearchController 需要额外点击才能成为第一响应者
【发布时间】:2017-01-31 10:00:48
【问题描述】:

我将我的应用程序从UISearchBar 切换到UISearchController。这是一个表格视图控制器。根据设计,除非它被激活,否则我最初不应将搜索栏保留在 UI 上(通常将搜索栏保留为“tableHeaderView”是一种常见做法)。问题是,我有一个搜索按钮,当点击“搜索栏”时应该激活并成为第一响应者。

当点击取消按钮时,它应该从 UI 中移除。但是,当我点击导航栏上的“搜索栏按钮”时,UISearchController 被激活,提供了暗淡的背景,但没有出现键盘。我需要在搜索栏上再点击一次才能将键盘显示在 UI 上。

这是我的搜索栏按钮操作:

@IBAction func onTapSearch(_ sender: AnyObject) {
    self.view.addSubview(searchController.searchBar)
    searchController.isActive = true
    searchController.becomeFirstResponder()
    isSearchActive = true
    self.navigationController?.setToolbarHidden(true, animated: false)
}

我在viewDidLoad 方法中配置UISearchController。让我知道您是否想查看该部分代码,但它是通常的代码。而且我确认我没有在任何地方调用resignFirstResponder() 方法。

【问题讨论】:

    标签: ios swift swift3 uisearchbar uisearchcontroller


    【解决方案1】:

    试试这个,

    只需替换这一行,

    searchController.becomeFirstResponder()
    

    以下内容,

    searchController.searchBar.becomeFirstResponder()
    

    编辑,

    func didPresentSearchController(_ searchController1: UISearchController) {
        searchController1.searchBar.becomeFirstResponder()
    }
    

    实现这个委托方法并尝试。

    【讨论】:

    • 我先有那个代码。不工作,然后修改。
    • 欢迎。如果您认为我的回答对您有所帮助,请接受它,以便对其他人有用。
    • 是的,我一分钟都无法接受。 :)
    • 是的,没关系。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2016-10-26
    • 2021-08-16
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多