簡體   English   中英

首次呈現搜索控制器后,iOS 11會隱藏范圍欄

[英]iOS 11 hides scope bar after first presentation of the search controller

我正在嘗試使用UISearchController在iOS 11中顯示搜索欄和范圍欄。

這是我用來設置搜索控制器的代碼

let searchController = UISearchController(searchResultsController: nil)
searchController.delegate = self
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false

searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.showsScopeBar = true
searchController.searchBar.scopeButtonTitles = ["1", "2", "3", "4"]
searchController.searchBar.delegate = self
definesPresentationContext = true

我想要一個帶有范圍欄的搜索欄,它始終可見。 當視圖控制器加載時,上面的代碼工作正常,它會顯示搜索欄和范圍欄。

但是,一旦搜索控制器變為活動狀態然后被解除,iOS就會在關閉搜索控制器時隱藏范圍欄,它只顯示搜索欄。

我嘗試通過在didDismissSearchController添加以下代碼來解決此問題,但是范圍欄和搜索欄位於彼此之上,而不是搜索欄下方的范圍欄(如下圖所示)。 將此代碼添加到searchBarTextDidBeginEditing(_ searchBar: UISearchBar)searchBarTextDidEndEditing(_ searchBar: UISearchBar)無效。

searchController.searchBar.showsScopeBar = true
searchController.searchBar.sizeToFit()

在此輸入圖像描述

  1. 嘗試將此添加到您的搜索控制器設置:

     searchController.sizeToFit() 
  2. 然后添加:

     func searchBarShouldBeginEditing(_ searchBar: UISearchBar) -> Bool { self.searchBar.sizeToFit() return true } func searchBarShouldEndEditing(_ searchBar: UISearchBar) -> Bool { self.searchBar.sizeToFit() return true } 

不要在搜索欄功能中放置searchController.searchBar.showsScopeBar = true 由於某種原因,這會產生問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM