скрыть UISearchBar под UINavigationBar после вызова функции cancelButton - PullRequest
5 голосов
/ 12 ноября 2009

Обычно я использую [self.tableView setContentOffset:CGPointMake(0,40)];, чтобы скрыть UISearchBar (который я установил в качестве заголовка tableView) под навигационной панелью. В viewDidLoad все работает хорошо: панель поиска находится ниже панели навигации при загрузке представления. Затем я ставлю ту же строку кода

[self.tableView setContentOffset:CGPointMake(0,40)]

в

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

но ничего не делает: панель поиска остается видимой при нажатии кнопки отмены. Что не так?

Ответы [ 2 ]

4 голосов
/ 16 июня 2010

Следующий метод должен сделать это:

-(void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{
    [self.tableView setContentOffset:CGPointMake(0,40)];    
}
1 голос
/ 21 ноября 2009

Метод ниже вызывается из основного потока?

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

Вы можете проверить так:

if ([NSThread isMainThread]) {
    NSLog(@"Yes it is the main thread.");
}

В противном случае любые изменения вида не будут регистрироваться на экране. Если вам нужно изменить вид из отдельного потока, вы можете использовать это:

[self performSelectorOnMainThread:@selector(XXX) withObject:nil waitUntilDone:NO];

Я не уверен, что это ваша проблема, но я бы начал искать.

...