У меня проблема с UISearchBar
.Когда я использую только UISearchBar
, он работает совершенно нормально.Но я хочу, чтобы кнопка Cancel
и некоторые другие функции UISearchController
были доступны.К сожалению, мой SearchViewController
должен быть представлен во всплывающем окне (я использую Presentr
CocoaPod).Проблема возникает только тогда, когда я нажимаю на UISearchBar
.
Без фокуса на UISearchBar
:
С фокусировкой и переключаемой клавиатурой (тот же фрагментэкран):
Он просто перемещается далеко влево.Он отключен из-за всплывающего окна 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
, он пока просто не используется.