点击UIViewController顶部的带有UISearchController的UISearchBar时会中断

时间:2019-04-03 15:35:28

标签: ios swift autolayout uisearchbar uisearchcontroller

我将UISearchControllerUISearchBar一起使用。

我想使用自动版式将UISearchBar放在UIViewController的视图顶部:

import UIKit

class ViewController: UIViewController {
    var searchController = UISearchController(searchResultsController: nil)

    let myCustomSearchBar = UISearchBar()

    var searchBar: UISearchBar {
        // return searchController.searchBar
        return myCustomSearchBar
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        searchController.dimsBackgroundDuringPresentation = false
        searchController.obscuresBackgroundDuringPresentation = false
        searchController.hidesNavigationBarDuringPresentation = false

        view.addSubview(searchBar)
        configureSearchBarLayout()
        searchBar.translatesAutoresizingMaskIntoConstraints = false
    }

    private func configureSearchBarLayout() {
        [
            searchBar.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            searchBar.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),
            searchBar.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            searchBar.heightAnchor.constraint(equalToConstant: 88)
            ]
            .forEach{
                $0.isActive = true
        }
    }
}

这将显示以下视图:

enter image description here

但是,一旦我点击searhBar,它就会完全移出屏幕,再也不会出现。

如果我修改代码以包含基本的UISearchBar,而不是UISearchController创建的代码,则可以正常工作:

enter image description here

当我尝试使用AutoLayout将其UISearchController的SearchBar固定到顶部以及如何解决该问题时,为什么它无法正确工作?

0 个答案:

没有答案