Настройка контроллера моего вида выглядит следующим образом: UISearchBar
вверху экрана, клавиатура внизу и другие виды между ними: пользовательские UIView
, UIView
, UITableView
. Когда я нажимаю на ячейки табличного представления и UIButton
с внутри UIView
с, я могу успешно запускать свои действия, сохраняя UISearchBar
все еще видимым на экране. Но когда я нажимаю UIView
s, у которых нет кнопок, это вызывает searchBarShouldEndEditing
, как будто строка поиска теряет фокус. Я хочу отключить это поведение и разрешить только кнопку Отмена и кнопку Готово на клавиатуре, чтобы вызвать закрытие UISearchBar
.
Я думал, что это связано с пузырьковым эффектом, и попытался реализовать это исправление:
extension UIViewController : UIGestureRecognizerDelegate{
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
return touch.view == gestureRecognizer.view
}
@IBAction func didTap(_ gestureRecognizer : UITapGestureRecognizer ) {
//
}
но это не решило проблему и UISearchBar
все еще вызывает searchBarShouldEndEditing
. Конечно, я мог бы добавить логику к searchBarShouldEndEditing
, чтобы вернуть false
, но не уверен, что это достаточно эффективно.
Как я могу убедиться, что UISearchBar
остается на месте, нажимая на другие элементы, такие как UIView
s?