在UINavigationController下键入时,UISearchController向上移动

时间:2019-04-24 14:19:34

标签: swift xcode

我在导航控制器中嵌入了一个viewcontroller(BlueViewController)。

blueViewController具有一个UISearchController,该UISearchController设置为blueViewController的tableView headerView。

searchController可以正常工作,除非它处于活动状态,它会向上移动并隐藏在UINavigationController(或某个地方)后面

我试图将搜索控制器的searchBar作为子视图添加到viewController,或者放置一个UIView并将searchBar分配给该UIView,这些都不起作用

我已经尝试过此链接,但是不起作用 Strange UISearchDisplayController view offset behavior in iOS 7 when embedded in navigation bar

这是BlueViewController中的searchController

let searchController:UISearchController = {
    let controller = UISearchController(searchResultsController: nil)
    controller.hidesNavigationBarDuringPresentation = false
    controller.obscuresBackgroundDuringPresentation = false
    controller.searchBar.inputAssistantItem.leadingBarButtonGroups = []
    controller.searchBar.inputAssistantItem.trailingBarButtonGroups = []
    return controller
}()

在viewDidLoad

 searchController.searchResultsUpdater = self
    searchController.obscuresBackgroundDuringPresentation = false
    definesPresentationContext = true

您也可以在这里找到整个项目 https://github.com/QiquanLu/TestNavigationWithSearchController

任何提示将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:0)

对于iOS 11及更高版本,您应该在searchController的navigationItem上设置BlueViewController属性,如下所示:

override func viewDidLoad() {
    super.viewDidLoad()

    navigationItem.searchController = searchController
}

不要将其添加为tableView的标题。