Обнаружение появления UISearchController в элементе навигации в iOS 11

Я реализую UISearchController как часть элемента навигации в iOS 11. Это, в общем, работает нормально. Но мне нужно знать, когда панель поиска отображается или скрывается автоматически с помощью прокрутки. Ни один из методов делегата в UISearchController или UISearchBar не предоставляет эту информацию. Свойство isActive в UISearchController имеет значение true, только когда панель поиска получает фокус (первый респондент).

Единственный способ, который я нашел, - это использовать KVO в кадре высоты searchBar, но это выглядит довольно экстремально для чего-то подобного.

С моим требованием связана также возможность программно скрывать панель поиска (как если бы пользователь прокручивал вверх). Единственный способ сделать это - установить для свойства элемента навигации UISearchController значение nil, но это также выглядит довольно экстремально.

Благодарю.

1 ответ

Самый простой способ сделать это - добавить searchBar в представлении прокрутки (представлении таблицы) сверху ячейки (я):

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

Другие вопросы по тегам