我正在使用带有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引用(例如通过它的父属性),但我找不到任何方法来获取它的指针:/
答案 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控制器?如果是这样,那么你已经拥有了你需要的引用,虽然通常你不需要忽略这个视图,但是当你取消搜索时它会被解雇。