Кнопка отмены в UISearchController не исчезает должным образом в IOS 13 - PullRequest
0 голосов
/ 22 октября 2019

Нажатие кнопки поиска на клавиатуре, а затем нажатие кнопки отмены не всегда приводит к отклонению кнопки отмены, даже если showCancelButton равно false или при пометке IOS 13 для автоматического удаления кнопки отмены. Это работает в симуляторе, но только 50% времени на моем устройстве. Кто-нибудь знает какие-либо возможные решения?

func setupSearchController() {
    if #available(iOS 13.0, *) {
        searchController.automaticallyShowsCancelButton = true
    } else {
        searchController.searchBar.showCancelButton = false
    }
}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    if #available(iOS 13.0, *) {
        searchController.automaticallyShowsCancelButton = true
    } else {
        searchController.searchBar.showCancelButton = false
    }
}

func updateSearchResults(for searchController: UISearchController) {
    if #available(iOS 13.0, *) {
        searchController.automaticallyShowsCancelButton = true
    } else {
        searchBar.showsCancelButton = true
    }
}

1 Ответ

0 голосов
/ 16 ноября 2019

Если я правильно понял проблему, похоже, это вопрос плохого времени. В этом случае решением было бы сделать небольшую задержку:

func searchBarCancelButtonClicked(_ searchBar: UISearchBar)
{
    if #available(iOS 13.0, *)
    {
        let deadlineTime = DispatchTime.now() + .seconds(0.3)
        DispatchQueue.main.asyncAfter(deadline: deadlineTime) {
            // your code here, such as
            searchController.automaticallyShowsCancelButton = true
        }
    }
    else
    {
        searchController.searchBar.showCancelButton = false
    }
}
...