кнопка отмены не отображается и не может вызвать функцию, когда пользователь нажимает на строку поиска - PullRequest
0 голосов
/ 08 апреля 2020

Нажатие на область, где находится кнопка отмены, вызывает функцию кнопки отмены, но сама кнопка отмены не отображается. Нажатие на строку поиска, как и перед вводом текста, вызывает повышение панели поиска, но не вызывает никаких функций делегата, поэтому я не могу внести необходимые изменения в свой пользовательский интерфейс. Кроме того, нажатие на строку поиска приводит к исчезновению моего табличного представления по непонятным причинам.

private func configureSearchBar() {
    searchController.searchResultsUpdater = self
    searchController.dimsBackgroundDuringPresentation = false
    searchController.searchBar.showsCancelButton = true
    searchController.searchBar.delegate = self
    definesPresentationContext = true
    searchController.obscuresBackgroundDuringPresentation = false
    view.addSubview(searchController.searchBar)
    searchController.searchBar.frame = CGRect(x: 20, y: topBarHeight * 1.65, width: self.view.bounds.width - 40, height: 55)
    let color:UIColor = .forestGreen
    let lightForestGreen = color.withAlphaComponent(0.5)
    searchController.searchBar.tintColor = lightForestGreen
    searchController.searchBar.barTintColor = lightForestGreen
    searchController.searchBar.backgroundColor = lightForestGreen
    searchController.searchBar.layer.borderColor = lightForestGreen.cgColor
    navigationItem.hidesSearchBarWhenScrolling = false
    searchController.hidesNavigationBarDuringPresentation = true
    searchController.searchBar.text = ""
    searchController.searchBar.setShowsCancelButton(true, animated: false)
}


//cancel button not visible, but tapping on that area calls this function below:

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    print("cancel button clicked...")
    agendaLabel.isHidden = false
    navigationController?.navigationBar.isHidden = true
    tableView.reloadData()
}

// нажатие на строку поиска приводит к тому, что оно перемещается в верхнюю часть экрана, но не вызывает любую из функций ниже :

extension ScheduleViewController: UISearchBarDelegate {

func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
    agendaLabel.isHidden = true
    tableView.isHidden = false
}

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    agendaLabel.isHidden = true
    tableView.isHidden = false
}

func searchBarResultsListButtonClicked(_ searchBar: UISearchBar) {
    agendaLabel.isHidden = true
    tableView.isHidden = false
}

}
...