Отключение панели областей в UISearchBar после начала редактирования - PullRequest
4 голосов
/ 23 июля 2011

У меня есть UISearchBar и его соответствующий контроллер отображения поиска, выложенный в xib-файле через InterfaceBuilder.Панель поиска настраивается в Интерфейсном Разработчике, когда флажок «Показывает область видимости» не установлен.Однако, как только текстовая строка начинается в строке поиска и отображается «оверлей поиска», UISearchBar отображается с панелью области действия, имеющей 2 кнопки и их по умолчанию «Заголовок».

Как убедиться, чтоScope Bar не отображается, когда начато редактирование SearchBar?

Я пробовал это из моего класса ViewController, который управляет панелью поиска:

- (void)viewDidLoad
{    
    UISearchBar *searchBar = self.searchDisplayController.searchBar;
    NSLog(@"Scopebar is visible? %@", searchBar.showsScopeBar == YES ? @"YES" : @"NO");
    searchBar.showsScopeBar = NO; // Doesn't seem to have an effect
}

#pragma mark - UISearchBarDelegate methods
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsScopeBar:NO]; // doesn't seem to work either
    return YES;
}

Пример кода Apple, TableSearch, который иллюстрирует поискимеет 4-кнопочную панель видимости после начала поиска.

1 Ответ

26 голосов
/ 31 июля 2011

Если вы загляните в InterfaceBuilder, вы увидите «Заголовок» дважды в списке «Заголовки областей» сразу под флажком «Показывает область видимости».InterfaceBuilder добавляет их, когда вы устанавливаете флажок.Он не удаляет их, когда вы снимаете флажок, но они по-прежнему отображаются, когда вы нажимаете в поле поиска в запущенном приложении.В InterfaceBuilder временно повторно включите флажок «Показывать область видимости», чтобы позволить вам выбрать каждую строку «Заголовок» и нажать кнопку «-», чтобы удалить их.Затем снимите флажок «Показывает область видимости».Вы не должны их больше видеть.

...