2012-02-28 3 views
3

Я думаю, что нашел ошибку в iOS 5.0 относительно UISearchBar и ее область видимости. Сначала я показываю панель области действия, включенную в XIB.UISearchBar scope bar iOS 5.0 ошибка?

Во время выполнения панель видимости отображается правильно. Однако при нажатии на текстовое поле поиска и нажатии кнопки отмены панель видимости удаляется с экрана. Область экрана все еще видна. Смотрите скриншоты.

UISearchBar still shows scope bar view area Если у кого-то есть идея о том, как обойти эту проблему, пожалуйста, дайте мне знать.

Спасибо. Кей.

+0

У меня та же проблема. Настройка поискаBar.showsScopeBar не имеет визуального эффекта. Показатель showScopeBar возвращает YES, и все же не отображаются полосы видимости. – Dustin

ответ

0

Просьба уточнить, что вы ожидаете/хотите. Существует несколько методов делегатов. Вот несколько вещей, которые я делаю в моем SearchBarViewController:

Сначала я делаю VC быть делегатом:

- (void)viewDidLoad { 
    searchBar.delegate = self; 
} 

Закрыть и вернуться к представлению вида контроллера (окно поиска модов):

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 
    [[self presentingViewController] dismissModalViewControllerAnimated:YES]; 
} 

Фильтрация:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { 
    [self filterContentForSearchText:searchString scope: 
    [[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]]; 

    // Return YES to cause the search result table view to be reloaded. 
    return YES; 
} 

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption { 
    [self filterContentForSearchText:[self.searchDisplayController.searchBar text] scope: 
    [[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:searchOption]]; 

    // Return YES to cause the search result table view to be reloaded. 
    return YES; 
} 

Успехов,

Damien

+0

Спасибо за ваш быстрый ответ. Я хотел бы заставить панель видимости оставаться видимой все время. Я даже внедрил подкласс UISearchBar ... – Kay

+0

Вы переопределили searchBarCancelClicked: в делегате убедиться, что он ничего не делает? Кроме того, вы используете UISearchDisplayController? Я понимаю, что вы подклассифицировали UISearchBar, но как насчет контроллера? Я помню, что у меня были проблемы с использованием UISearchBar без UISearchDisplayController, предоставленного в IB. Я только что проверил свой собственный код, и когда я нажимаю «Отменить», табличное представление очищается. Это то, что вы хотите? –

+0

Да, я использую UISearchDisplayController и да, я также реализовал searchBarCancelClicked: Нет результатов! :-( – Kay

4

Попробуйте реализовать делегат 'searchBarShouldEndEditing', чтобы повторно включить панель видимости, когда панель поиска существует.

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar 
{ 
    self.searchBar.showsScopeBar = YES; 
    [self.searchBar sizeToFit]; 
    self.tableView.tableHeaderView = self.searchBar; 
    return YES; 
} 

Вы можете прочитать больше об этом решении here

Смежные вопросы