(Swift) Как показать кнопку Отмена на панели поиска, даже если нет текста? - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть панель поиска с кнопкой Cancel. Кнопка Отмена появляется только тогда, когда я начинаю набирать текст в строке поиска.
Я хочу показать кнопку отмены в тот момент, когда пользователь нажимает панель поиска (когда появляется курсор и клавиатура).

Код:

let searchController = UISearchController(searchResultsController: nil)
    var isSearchBarEmpty: Bool {
        return searchController.searchBar.text?.isEmpty ?? true
    }
    var searching = false

Методы поиска:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        let cancelButtonAttributes = [NSAttributedString.Key.foregroundColor: UIColor.systemGreen]
        UIBarButtonItem.appearance().setTitleTextAttributes(cancelButtonAttributes , for: .normal)

        searching = true
        searchBar.showsCancelButton = true
        tableView.reloadData()
    }

    func searchBarSearchButtonClicked(_ searchBar: UISearchBar)
    {
        searching = false
        self.searchBar.endEditing(true)
    }

    func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
        searching = false
        searchBar.text = nil
        searchBar.showsCancelButton = false
        searchBar.endEditing(true)
        tableView.reloadData()
    }

1 Ответ

4 голосов
/ 19 февраля 2020

Можно попробовать метод делегата

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {

   searchBar.setShowsCancelButton(true, animated: true)

}

И

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {

    searchBar.setShowsCancelButton(false, animated: true)
}
...