setContentOffset не правильно при отмене поиска - PullRequest
0 голосов
/ 23 сентября 2010

У меня есть представление, которое содержит UISearchBar.Этот UISearchBar не отображается в верхней части страницы - он находится примерно на 90 пунктов вниз от верхней части экрана, под заголовком изображения.

Все элементы представления обернуты вUIScrollView.Правильно происходит, когда пользователь нажимает на UISearchBar - весь вид прокручивается вверх, поэтому панель поиска находится в самой верхней части экрана, темное наложение появляется над содержимым вида, а клавиатура скользит вверх.

Пока все хорошо.Проблема возникает, когда я хочу отменить поиск и вернуть все содержимое на прежнее место (с UISearchBar больше нет в верхней части экрана).

Я могу сделать это, если пользовательХит отменяется, когда отображается клавиатура - просто прослушайте UIKeyboardWillHideNotification, затем установите смещение содержимого представления прокрутки обратно на (0, 0).

Однако, если пользователь проведет пальцем по некоторым результатам поиска, клавиатура будетуйти, чтобы вы могли получить более широкое представление результатов поиска.Если пользователь затем нажимает «Отмена», панель поиска остается в верхней части страницы, и все выглядит ужасно.

Я попытался поместить код 'setContentOffset' в UISearchDisplayDelegate:

- (void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView
{
  [_scrollView setContentOffset:CGPointMake(0,0) animated:YES];
}

Это работает, но выглядит не очень хорошо, потому что прокрутка не происходит, пока ПОСЛЕ результатов поиска исчезают (так что вы видите две отдельные анимации).

Затем я попробовал этот метод (который называетсяперед тем, как представление таблицы будет скрыто):

- (void)searchDisplayController:(UISearchDisplayController *)controller willHideSearchResultsTableView:(UITableView *)tableView
{
  [_scrollView setContentOffset:CGPointMake(0,0) animated:YES];
}

Однако это не имеет никакого эффекта.Смещение содержимого не изменяется.

Есть советы?

1 Ответ

0 голосов
/ 23 сентября 2010

Возможно, контроллер отображения поиска устанавливает смещение контента для вас?Попробуйте вместо этого установить смещение содержимого в searchDisplayController:didShowSearchResultsTableView:.

...