UISearchBar - Как я могу предотвратить отклонение scopeBar при нажатии кнопки отмены? - PullRequest
4 голосов
/ 21 июля 2011

Я хочу, чтобы мои кнопки видимости UISearchBar всегда оставались видимыми, но даже если я установил searchBar.showsScopeBar = YES', кнопки по-прежнему не отображаются с анимацией, если я начинаю поиск, а затем отменяю его.

Можно ли как-то предотвратить анимацию scopeBar при отмене поиска?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Поскольку область действия предназначена только для использования, когда UISearchController активен, я решил проблему по-другому.

Я немедленно активирую UISearchController.

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    // Immediately activating the searchController keeps scope bar permanently visible
    searchController.isActive = true
    // Tapping the cancel button triggers this method, which quickly toggles the scope bar
    // But the cancel button isn't needed anyway, so hiding it solves the problem
    searchController.searchBar.showsCancelButton = false
}

Но теперь, когда UISearchController всегда активен, по умолчанию UINavigationBar скрыт, что, вероятно, не то, что вам нужно. Чтобы это исправить, я предотвращаю его скрытие в viewDidLoad

searchController.hidesNavigationBarDuringPresentation = false

Этот подход означает, что мне вообще не нужно использовать showsScopeBar, потому что он всегда виден, когда UISearchController активен.

0 голосов
/ 22 июля 2011

Если кому-то интересно, это делает следующий метод делегата.

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsScopeBar:YES];
    return YES;
}
...