UISearchBar Как отключить клавиатуру и выбрать элемент

#ios #swift #uitableview #uisearchbar

#iOS #swift #uitableview #uisearchbar

Вопрос:

По разным причинам я использую UISearchBar сам по себе для фильтрации содержимого UITableView. Фильтрация работает отлично. Однако для выбора чего-либо требуется два нажатия. Первое нажатие отключает клавиатуру, а затем второе выбирает элемент в UITableView. Есть ли способ, которым я могу одним нажатием отключить клавиатуру и выбрать элемент?

Ответ №1:

В UITableView частности, вы можете использовать:

 func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    superview?.endEditing(true)
}
  

Это завершит редактирование при перетаскивании табличного представления.

В более общем смысле endEditing(Bool) функция при вызове на a UIView просматривает всю иерархию представлений и, если найден редактируемый текстовый элемент, отменяет его. Параметр предназначен для определения того, следует ли просить представление уйти в отставку в качестве первого респондента или просто быть вынужденным уйти в отставку в качестве первого респондента.

Согласно документации: «Этот метод просматривает текущее представление и его иерархию вложенных представлений для текстового поля, которое в настоящее время является первым респондентом. Если он найдет его, он попросит это текстовое поле отказаться от участия в качестве первого ответчика. Если для параметра force установлено значение true, текстовое поле даже не запрашивается; оно вынуждено уйти в отставку «.

Это означает, что вы можете вызывать endEditing(true) непосредственно внутри didSelectItemAt , просто убедитесь, что вы вызываете его в представлении, в котором панель поиска является подвидом. Или просто вызовите его в самой строке поиска.