Когда я нажимаю «Отмена» на панели поиска, она исчезает

#ios #swift

#iOS #swift

Вопрос:

Я использую UISearchBar, когда я нажимаю кнопку «Отмена» на панели поиска, она исчезает. UITableView перемещается поверх строки поиска, а строка поиска исчезает под ней. Вот мой код:

     searchController.searchResultsUpdater = self
    searchController.obscuresBackgroundDuringPresentation = false
    searchController.searchBar.placeholder = "Search"
    searchController.searchBar.searchBarStyle = UISearchBar.Style.prominent
    searchController.searchBar.isTranslucent = true
    searchController.hidesNavigationBarDuringPresentation = false
    
    searchController.dimsBackgroundDuringPresentation = false
    definesPresentationContext = true
    
    
    definesPresentationContext = true
    tableView.separatorStyle = .none

    let searchBar = searchController.searchBar
    searchBar.backgroundColor = UIColor.white
    searchBar.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width , height: 44)
    searchBar.searchBarStyle = UISearchBar.Style.prominent
    searchBar.placeholder = " Search book title, author..."
    searchBar.sizeToFit()
    view.backgroundColor = UIColor.white
    searchBar.isTranslucent = true
    searchBarView.addSubview(searchBar)
    innerView.addSubview(searchBarView)
  

Ответ №1:

Вероятно, это происходит потому, что панель поиска пересчитывает свой фрейм после нажатия кнопки «Отмена» и получает нулевую высоту. Попробуйте переместить логику инициализации панели поиска в отдельный метод и вызвать его также в методе searchBarCancelButtonClicked UISearchBarDelegate.

Также мой совет вам: увеличьте цель развертывания до iOS 11 и вместо манипуляций с панелью поиска просто используйте это:

 self.navigationItem.searchController = searchController