【问题标题】:Search Bar disappeared from view while typing键入时搜索栏从视图中消失
【发布时间】:2016-01-06 12:28:03
【问题描述】:

我在ViewDidLoad() 中将SearchBar 添加到我的TableView 中:

    self.searchBar = UISearchController(searchResultsController: nil)
    self.searchBar.searchResultsUpdater = self

    self.searchBar.dimsBackgroundDuringPresentation = false
    self.searchBar.searchBar.sizeToFit()

    self.tableView.tableHeaderView = self.searchBar.searchBar
    self.tableView.reloadData()

一切正常,但是当我点击此SearchBar 时,它消失了。这意味着,我仍然可以打字,并且可以看到结果,但是看不到 SearchBar。我实现了UISearchBarDelegate,我一直在尝试添加

func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
    self.navigationController?.navigationBarHidden = false
}

func searchBarTextDidEndEditing(searchBar: UISearchBar) {
    self.navigationController?.navigationBarHidden = true
}

但它仍然不起作用。你知道为什么这个Search Bar 会消失吗?

这个问题的解决方法是(像@sandy sad)在viewDidLoad()写这行代码

 self.aNavigationController?.extendedLayoutIncludesOpaqueBars = true

但是现在我遇到了一个新问题,这意味着当我在TableView 中选择行并显示新的VievController 时,SearchBar 并没有消失,我在新视图中看到了它。为什么?

【问题讨论】:

    标签: ios iphone swift uisearchbar uisearchcontroller


    【解决方案1】:

    您需要在 viewDidLoad() 中将 extendedLayoutIncludesOpaqueBars 设置为 true。

    self.aNavigationController?.extendedLayoutIncludesOpaqueBars = true
    

    【讨论】:

    • 有效!谢谢!但我还有另一个问题。当我单击结果列表并进入新视图并且searchbar 不想消失时,我需要做什么?我尝试使用它func searchBarResultsListButtonClicked(searchBar: UISearchBar) { self.navigationController?.navigationBarHidden = true } 但不起作用。
    • 你试过 self.definesPresentationContext = true 吗?
    【解决方案2】:

    其实search Bar并没有隐藏,只是根据文字调整widthheight

    从您的代码中删除这一行,它会正常工作。

    self.searchBar.searchBar.sizeToFit()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多