UISearchDisplayController автоматически создает UIPopovercontroller для отображения результатов поиска контента ?! Как отмахнуться от этого? - PullRequest
6 голосов
/ 01 июля 2010

Я использую UISearchDisplayController с UISearchBar. Я вставил этот UISearchBar в свое приложение, используя IB, и получаю:

альтернативный текст http://img6.imageshack.us/img6/1985/screenshot20100701at156.png

Прекрасно: когда вы начинаете записывать на пленку, всплывающий контроллер popovercontroller выглядит волшебным образом (я ничего сам не написал, чтобы он появился!)

Затем, когда в результате щелкается строка, я хочу отклонить PopoverController НО , на этом этапе я никогда не создавал экземпляр UIPopoverController на моей стороне: похоже, что в инкапсулированном поведении есть UISearchDisplayController, который автоматически оборачивает searchContentsController в UIPopoverController. Это действительно здорово, потому что все работает отлично, ничего не делая, кроме того, что я не могу получить ссылку на этот UIPopoverController, чтобы закрыть его: (

Кто-нибудь знает, как получить ссылку на этот «магически» созданный UIPopoverController? (это доказательство того, что iPad действительно «волшебное» устройство;)

Я думал, что будет ссылка на UIPopoverController из его contentController (например, через его родительское свойство), но я не могу найти способ получить указатель на него: /

Ответы [ 3 ]

11 голосов
/ 12 июля 2010

Не работает ли [searchDisplayController setActive:NO animated:YES]; тогда?

1 голос
/ 04 января 2011

Ни одно из вышеперечисленных решений для меня не сработало, но я решил это следующим образом:

    [self.searchDisplayController setActive:NO animated:YES];
    [searchBar becomeFirstResponder];

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

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    if ([searchText isEqualToString:@""]) {
        [self.searchDisplayController setActive:NO animated:YES];
        [searchBar becomeFirstResponder];
    }
}
0 голосов
/ 10 июля 2010

Можете ли вы добавить более подробную информацию о том, как вы подключили UISearchDisplayController в IB? Он не делает ничего особенного с UIPopoverControllers на iPad, поэтому я предполагаю, что вы установили searchContentsController для контроллера, который является UIPopoverController? Если это так, то у вас уже есть нужная ссылка, хотя обычно вам не нужно отклонять эту точку зрения, она отменяется при отмене поиска.

...