UISearchDisplayController自动创建一个UIPopovercontroller来显示内容搜索结果?!怎么解雇呢?

时间:2010-07-01 12:11:38

标签: ipad uisearchbar uipopovercontroller uisearchdisplaycontroller

我正在使用带有UISearchBar的UISearchDisplayController。我使用IB将这个UISearchBar放在我的应用程序中,然后得到:

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

好的:当你开始录音时,结果popovercontroller显得神奇(我自己没有写任何东西让它出现!)

然后,当在结果中单击一行时,我想在此阶段忽略PopoverController BUT ,我从未在我身边实例化UIPopoverController:看起来如果有一个封装行为自动将UISearchDisplayController包裹在searchContentsController内的UIPopoverController。这真的很棒,因为除了我无法获取对此UIPopoverController的引用以解除它之外,所有内容都能正常工作而不做任何事情:(

有谁知道如何获得对这个“神奇”创建的UIPopoverController的引用? (这证明iPad真的是一个“神奇”设备;)

我以为会有一个来自其contentController的UIPopoverController引用(例如通过它的父属性),但我找不到任何方法来获取它的指针:/

3 个答案:

答案 0 :(得分:11)

[searchDisplayController setActive:NO animated:YES];不起作用吗?

答案 1 :(得分:1)

以上解决方案都不适合我,但我解决了这个问题:

    [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];
    }
}

答案 2 :(得分:0)

您是否可以添加一些有关如何在IB中连接UISearchDisplayController的详细信息?它与iPad上的UIPopoverControllers没有任何特殊之处,所以我假设你已经将searchContentsController设置为一个UIPopoverController控制器?如果是这样,那么你已经拥有了你需要的引用,虽然通常你不需要忽略这个视图,但是当你取消搜索时它会被解雇。