UISearchDisplayController automatically creates a UIPopovercontroller to display content search result ?! How to dismiss it?

ぃ、小莉子 提交于 2019-12-03 14:37:51

问题


I'm using a UISearchDisplayController with a UISearchBar. I put this UISearchBar in my app using IB and I get :

alt text http://img6.imageshack.us/img6/1985/screenshot20100701at156.png

Fine : when you start taping, the result popovercontroller appears magically (I didn't write anything on my own to make it appear !)

Then, when a row is clicked among the result, I want to dismiss the PopoverController BUT at this stage, I never instantiated the UIPopoverController on my side : it looks like if there's an encapsulated behavior in the UISearchDisplayController that automatically wraps its searchContentsController inside a UIPopoverController. That's really great because everything works perfectly without doing anything except that I cannot get the reference to this UIPopoverController to dismiss it :(

Does anyone know how to get the reference to this "magically" created UIPopoverController ? (this is the proof the iPad is really a "magical" device ;)

I thought there would be a reference to the UIPopoverController from its contentController (through its parent property for instance), but I cannot find any way to get a pointer to it :/


回答1:


Does [searchDisplayController setActive:NO animated:YES]; not work then?




回答2:


None of above solutions worked for me, but I solved it with this:

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

This way cursor stays in the field but popover is dismissed when there are no results.

Full code:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    if ([searchText isEqualToString:@""]) {
        [self.searchDisplayController setActive:NO animated:YES];
        [searchBar becomeFirstResponder];
    }
}



回答3:


Can you add some more details on how you have wired up the UISearchDisplayController in IB? It does not do anything special with UIPopoverControllers on the iPad so I assume you have set the searchContentsController to a controller that is a UIPopoverController? If so then you already have the reference you need, though normally you do not need to dismiss this view, it is dismissed for you when you cancel the search.



来源:https://stackoverflow.com/questions/3157590/uisearchdisplaycontroller-automatically-creates-a-uipopovercontroller-to-display

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!