6

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

替代文字 http://img6.imageshack.us/img6/1985/screenshot20100701at156.png

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

然后,当在结果中单击一行时,我想在这个阶段关闭 PopoverController但是,我从来没有在我这边实例化 UIPopoverController :看起来如果有一个封装的行为UISearchDisplayController会自动将其包装searchContentsController在一个UIPopoverController. 这真的很棒,因为除了我无法获得对这个 UIPopoverController 的引用来解除它之外,一切都可以完美地工作而无需做任何事情:(

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

我认为 UIPopoverController 会从它的 contentController 中引用(例如通过它的 parent 属性),但是我找不到任何方法来获取指向它的指针:/

4

3 回答 3

11

[searchDisplayController setActive:NO animated:YES];工作呢?

于 2010-07-12T11:46:31.493 回答
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];
    }
}
于 2011-01-04T04:48:22.997 回答
0

您能否添加更多关于如何在 IB 中连接 UISearchDisplayController 的详细信息?它对 iPad 上的 UIPopoverControllers 没有任何特殊作用,所以我假设您已将 searchContentsController 设置为 UIPopoverController 的控制器?如果是这样,那么您已经拥有所需的参考,尽管通常您不需要关闭此视图,当您取消搜索时它会为您关闭。

于 2010-07-09T23:37:01.177 回答