У меня проблема с панелью поиска, которая ведет себя странным образом, когда она становится firstResponder
и когда она уходит в отставку.
Строка поиска добавляется как заголовок представления таблицы
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.frame.size.width, 44.0f)];
self.searchBar.translucent = NO;
self.searchBar.barTintColor = [UIColor grayColor];
self.tableView.tableHeaderView = self.searchBar;
self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar
contentsController:self];
self.searchController.searchResultsDataSource = self;
Контроллер представления устанавливает левую панель JASidePanelController
, и она скрывает центральную панель, когда клавиатура показывает или скрывает:
- (void)keyboardWillAppear:(NSNotification *)note
{
[self.sidePanelController setCenterPanelHidden:YES
animated:YES
duration:[[note.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
self.searchBar.showsCancelButton = YES;
}
- (void)keyboardWillDisappear:(NSNotification *)note
{
[self.sidePanelController setCenterPanelHidden:NO
animated:YES
duration:[[note.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]];
self.searchBar.showsCancelButton = NO;
}
Нормальное состояние
Когда панель поиска становится firstResponder
, она либо перемещается вокруг точки вверх или вниз вниз случайно
И когда панель поиска уходит в отставку, она анимируется, чтобы достичь начала окна, а затем вернуться в свой естественный кадр
Вот пример , воспроизводящий ошибку.
ИЗМЕНИТЬ:
По @kwylez предложение, нежелательная анимация что панель поиска делает, когда она уходит в отставку, можно избежать:
self.searchBar.clipsToBounds = YES;