Скрыть UIToolBar при использовании UISearchBar - PullRequest
3 голосов
/ 19 октября 2011

Здравствуйте. В настоящее время у меня возникает проблема при попытке скрыть панель инструментов с панелью поиска.

У меня есть модальное представление с 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];
}

Ответы [ 2 ]

0 голосов
/ 19 октября 2011

Вы можете скрыть это в нужное время, используя:

toolbar.hidden = YES;
0 голосов
/ 19 октября 2011

почему бы просто не использовать

toolbar.hidden = TRUE;
...