Метод делегирования searchBarTextDidBeginEditing снова вызывается при нажатии кнопки назад

#ios #objective-c #uitableview #uisearchbar

#iOS #objective-c #uitableview #панель пользовательского поиска

Вопрос:

Я разрабатываю приложение для iPhone, в котором я застрял в какой-то момент.

У меня есть один ViewController со скрытой панелью навигации, а панель поиска находится в центре страницы.

когда пользователь нажимает на панель поиска searchBarTextDidBeginEditing , запускается метод.

после этого при изменении текста в методе SearchBar textDidChange SearchBar я загружаю текущие данные в tableview, а при нажатии на tableview я перехожу на другую страницу с не скрытой панелью навигации.

Теперь, когда я снова нажимаю кнопку «Назад», я перехожу на страницу поиска здесь searchBarTextDidBeginEditing , метод снова запускается.

Почему этот метод снова вызывается при обратном нажатии?

Пожалуйста, помогите и заранее спасибо.

Ответ №1:

Ваш SearcBarTextDidBeginEditing вызван из-за того, что ваш контроллер отображения поиска все еще находится в активном режиме,

В вашем методе делегирования TableView,

 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    [self.view endEditing:YES];
    [self.searchDisplayController.searchBar resignFirstResponder];


   // Set Navigation
}
  

И в том же классе в представлении появится SET,

 -(void)viewWillAppear:(BOOL)animated{

    self.searchDisplayController.Active = NO;

}
  

Надеюсь, это поможет вам!

Комментарии:

1. Если это поможет вам, вы можете принять его как правильный для ссылки на других.

Ответ №2:

Я думаю, что UITextField сохраняет фокус на себе при навигации.

Попробуйте [textField resignFirstResponder] при нажатии на ваш TableView перейти.