UISearchBar UISearchController внезапно меняет положение себя и родительского VC - PullRequest
0 голосов
/ 08 декабря 2018

У меня проблема с UISearchBar.Когда я использую только UISearchBar, он работает совершенно нормально.Но я хочу, чтобы кнопка Cancel и некоторые другие функции UISearchController были доступны.К сожалению, мой SearchViewController должен быть представлен во всплывающем окне (я использую Presentr CocoaPod).Проблема возникает только тогда, когда я нажимаю на UISearchBar.

Без фокуса на UISearchBar: enter image description here

С фокусировкой и переключаемой клавиатурой (тот же фрагментэкран): enter image description here

Он просто перемещается далеко влево.Он отключен из-за всплывающего окна Presentr.

А вот код:

class SearchViewController: UIViewController {
    private let tableView = UITableView()
    private let searchController = UISearchController(searchResultsController: nil)
    private let doneButton = UIButton(type: .system)
    private var data: [String]?

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        tableView.delegate = self
        searchController.delegate = self
        searchController.searchBar.delegate = self
        searchController.searchResultsUpdater = self
        setupViews()
    }
    init(data: [String]) {
        self.data = data
        super.init(nibName: nil, bundle: nil)
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    private func setupViews() {
        view.addSubview(searchController.searchBar)
        searchController.searchBar.snp.makeConstraints { make in
            make.left.right.top.equalToSuperview()
        }
        view.addSubview(tableView)
        tableView.snp.makeConstraints { make in
            make.top.equalTo(searchController.searchBar.snp.bottom)
            make.bottom.right.left.equalToSuperview()
        }
        extendedLayoutIncludesOpaqueBars = true
        searchController.dimsBackgroundDuringPresentation = false
        searchController.searchBar.placeholder = "Search your country code"
        tableView.tableFooterView = doneButton
        definesPresentationContext = true
        automaticallyAdjustsScrollViewInsets = false
    }
}

Пожалуйста, забудьте о doneButton, он пока просто не используется.

...