Лучше всего, вероятно, использовать –searchBarShouldBeginEditing: в протоколе UISearchBarDelegate.
Это будет выглядеть примерно так:
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {
CGRect newFrame = //some rect
mySearchBar.frame = newFrame;
return YES;//this is important!
}
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {
CGRect originalFrame = //the original frame
mySearchBar.frame = originalFrame;
return YES;
}
РЕДАКТИРОВАТЬ: один из других ответов предлагает использоватьуведомления UIKeyboard, но это может сбить с толку.Это, однако, дает преимущество работы при каждом появлении клавиатуры, а не только когда UISearchBar является первым респондентом.
РЕДАКТИРОВАТЬ 2: Майур Джоши предлагает использовать анимацию, что можно сделать так:
[UIView animateWithDuration:duration
animations:^{
//what you want to animate (in this case, the search bar's frame)
}
completion:^(BOOL finished){
//what to do when the animation finishes
}];
РЕДАКТИРОВАТЬ 3: Если вы не хотите скрывать вид за панелью поиска, вам придется уменьшать его высоту всякий раз, когда панель поиска перемещается вверх.Он может идти там же, где и код, для анимации панели поиска.