Изменить высоту панели поиска в UITableView (swift 5) - PullRequest
0 голосов
/ 04 августа 2020

Я следовал этому примеру , чтобы реализовать поиск в виде таблицы. Но я не использую контроллер навигации, поэтому добавляю панель поиска непосредственно в TableViewHeaderView. Поиск работает нормально, но мне нужно изменить высоту строки поиска. Я попытался добавить ограничения в текстовое поле, и это изменило высоту панели, но после поиска Bar застревает над tableView.

введите здесь описание изображения

1 Ответ

0 голосов
/ 04 августа 2020

Решение, которое я сделал: установил мои ограничения для TextField в строке поиска. Отключите отображение кнопки «Отмена» (иначе она будет перекрывать панель поиска).

 func configureSearch() {
    
    searchController.searchResultsUpdater = self
    searchController.obscuresBackgroundDuringPresentation = false
    definesPresentationContext = false        
    searchController.searchBar.searchBarStyle = .minimal
    searchController.searchBar.placeholder = "Search station"
    searchController.searchBar.showsCancelButton = false
    
    if let searchField = searchController.searchBar.value(forKey: "searchField") as? UITextField {
        
        searchField.snp.makeConstraints { (make) in
            make.height.equalTo(55)
            make.leading.equalToSuperview().offset(20)
            make.trailing.equalToSuperview().offset(-20)
        }
                    
        searchField.textColor = .white
        searchField.backgroundColor = .black
        searchField.font = UIFont(name: "SFUIText-Regular", size: 14)
    }
    tableView.tableHeaderView  = searchController.searchBar
    
}

Чтобы отключить searchController (обычно это выполняется с помощью кнопки «Отмена»), я добавляю tapGesture:

 let searchTap = UITapGestureRecognizer(target: self, action: #selector(handleTap(_:)))
    self.view.addGestureRecognizer(searchTap)

@objc func handleTap(_ sender: UITapGestureRecognizer) {       
    searchController.isActive = false
}
...