Здравствуйте. В настоящее время у меня возникает проблема при попытке скрыть панель инструментов с панелью поиска.
У меня есть модальное представление с UIToolBar, UISearchBar (и его контроллером) и UITableView.Я использую UIToolbar, потому что это представление фактически отображается как модальное представление.Я предполагаю, что то, что я пытаюсь сделать, будет немного проще в контексте UINavigationController.
При поиске я хочу скрыть панель инструментов.Для этого я использую уведомления, чтобы изменить рамку моих компонентов, когда появляется клавиатура.Но у меня проблема, под моей строкой поиска есть выделенное место.Вы можете увидеть скриншот:
http://dl.dropbox.com/u/39339665/Capture%20d%E2%80%99%C3%A9cran%202011-10-19%20%C3%A0%2016.21.43.png
Где я использую NSNotifcationCenter, чтобы получать уведомления, когда клавиатура будет скрыта / показана:
- (void)viewDidLoad {
[super viewDidLoad];
[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
Вотмой обратный звонок:
- (void)keyboardWillHide:(NSNotification *)notification
{
[UIView beginAnimations:nil context:nil];
CGRect toolbarFrame = self.toolBar.frame;
toolbarFrame.origin.y += toolbarFrame.size.height;
CGRect tableViewFrame = self.theTableView.frame;
tableViewFrame.origin.y += toolbarFrame.size.height;
tableViewFrame.size.height -= toolbarFrame.size.height;
self.toolBar.frame = toolbarFrame;
self.theTableView.frame = tableViewFrame;
[UIView commitAnimations];
}
- (void)keyboardWillShow:(NSNotification *)notification
{
[UIView beginAnimations:nil context:nil];
CGRect toolbarFrame = self.toolBar.frame;
toolbarFrame.origin.y -= toolbarFrame.size.height;
CGRect tableViewFrame = self.theTableView.frame;
tableViewFrame.origin.y -= toolbarFrame.size.height;
tableViewFrame.size.height += toolbarFrame.size.height;
self.toolBar.frame = toolbarFrame;
self.theTableView.frame = tableViewFrame;
[UIView commitAnimations];
}