为什么每次点击搜索栏时导航栏都会消失?

时间:2021-04-13 17:47:15

标签: ios swift uinavigationcontroller algolia uisearchcontroller

我在导航栏标题视图中添加了一个搜索栏。搜索栏显示正确且在搜索和检索结果时工作正常。

但是每次我点击搜索栏输入查询时,整个导航栏都会消失,不再可见。如果我然后向下拖动视图,它会重新出现。虽然在视图之外,我仍然可以输入和搜索并查看结果,但整个导航栏不在视图中。

代码上下文:我正在使用 Algolia 搜索 SDK 从 google firestore 查询数据。然后将命中添加到结果表视图控制器。

import UIKit
import Foundation
import InstantSearch


class AlgoliaViewController: UIViewController, UISearchBarDelegate {



let userHitsInteractor: HitsInteractor<User> = .init(infiniteScrolling: .off, showItemsOnEmptyQuery: false)
let businessHitsInteractor: HitsInteractor<Business> = .init(infiniteScrolling: .off, showItemsOnEmptyQuery: false)

let multiSearch = MultiIndexSearcher(appID: APP_ID, apiKey: KEY, indexNames: ["dev_USERS","dev_BUSINESS"])
lazy var multiConnector: MultiIndexSearchConnector = .init(searcher: multiSearch, indexModules: [
    .init(indexName: "dev_USERS",
          hitsInteractor: userHitsInteractor),
    .init(indexName: "dev_BUSINESS",
          hitsInteractor: businessHitsInteractor)
  ], searchController: searchController, hitsController: hitsTableViewController)


  lazy var searchController: UISearchController = .init(searchResultsController: hitsTableViewController)


let hitsTableViewController = MultiIndexController()
  let statsInteractor: StatsInteractor = .init()

override func viewDidLoad() {
    super.viewDidLoad()

    multiConnector.connect()
    multiSearch.search()
    statsInteractor.connectController(self)
    setupUI()
}

func setupUI() {
    view.backgroundColor = .white

    //navigationItem.searchController = searchController
    
    navigationItem.titleView = searchController.searchBar
    
    navigationController?.navigationBar.backgroundColor = .white
    navigationController?.navigationBar.isTranslucent = false
    navigationController?.hidesBarsOnSwipe = false
    
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.showsSearchResultsController = true
    searchController.automaticallyShowsCancelButton = false
    searchController.searchBar.delegate = self
    searchController.obscuresBackgroundDuringPresentation = false
    
    hitsTableViewController.view.backgroundColor = .white
}

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    searchController.isActive = true
}

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
    searchController.isActive = false
}

}

目前已注释掉,但在我尝试之前:

navigationItem.searchController = searchController

这并没有表现出相同的问题,但是就用户界面而言,导航栏似乎最终更高,搜索栏首尾相连地位于栏下方并且与导航栏按钮不对齐,因此看起来很奇怪。

0 个答案:

没有答案
相关问题