Панель параметров рабочей области ниже UISearchBar
У меня есть UISearchBar и UISearchDisplayController, все работает отлично, но мой селектор видимости отображается рядом с текстовым полем, а не под ним. Я знаю, что это ожидаемое действие, когда устройство находится в ландшафте, но поскольку у меня есть UISearchBar в главном представлении UISplitViewController, он выглядит следующим образом:
![UISearchBar problem]()
Есть ли способ заставить панель видимости отображаться под текстовым полем во всех ориентациях интерфейса (я знаю, что это хорошо работает в Mail.app на iPad, поэтому возможно, но кто знает, решит ли Apple скрыть вариант для этого)
Ответы
Ответ 1
Это не является частью публичного API. Надеюсь, он будет добавлен в будущем. Это может быть выполнено с помощью Private API, просмотр дампа класса UIKit поможет вам там.
Удачи!
edit: Обратите внимание, что использование частных API может заставить вас отказаться от хранилища приложений, как это уже известно большинству людей.
Ответ 2
Я использовал UISearchDisplayDelegate, чтобы показать и скрыть панель видимости.
-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
[controller.searchBar setShowsScopeBar:YES];
}
-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller
{
[controller.searchBar setShowsScopeBar:NO];
}
Ответ 3
Не используйте частные API. Вместо этого следуйте рекомендациям Apple из Руководства пользователя IOS:
Когда панель поиска присутствует, рядом с ней может появиться панель видимости. панель видимости под панелью поиска, независимо от ориентации, если вы не используете в своем коде контроллер отображения поиска (для более информация о том, как это работает, см. UISearchDisplayController Class Справка). Когда вы используете контроллер отображения поиска, панель видимости отображается в строке поиска справа от поля поиска, когда устройство находится в альбомной ориентации (в портретной ориентации, ниже строки поиска).
Это работало для меня с помощью раскадровки.
Ответ 4
Почему бы просто не настроить вашу панель поиска в настройках? Вот что я использую в своем текущем проекте. Он скрывает строку поиска до тех пор, пока пользователь не прокрутится вверх, и панель области загружается под текстовым полем, когда они начнут вводить элементы. Оттуда просто отфильтруйте, как обычно:
- (void)setupSearchBar {
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 44)];
self.searchBar.showsScopeBar = YES;
self.searchBar.scopeButtonTitles = [NSArray arrayWithObjects:@"Users", @"Groups", nil];
self.tableView.tableHeaderView = self.searchBar;
CGPoint offset = CGPointMake(0, self.searchBar.frame.size.height);
self.tableView.contentOffset = offset;
self.searchController = [[UISearchDisplayController alloc] initWithSearchBar:self.searchBar
contentsController:self];
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsDelegate = self;
self.searchController.delegate = self;
}
вызов [self setupSearchBar];
в viewDidLoad, который вы отправили на гонки.