代码之家  ›  专栏  ›  技术社区  ›  yonel

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

  •  6
  • yonel  · 技术社区  · 16 年前

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

    然后,当在结果中单击一行时,我想关闭PopoverController 但是 在这个阶段,我从来没有在我这边实例化UIPopoverController:它看起来像是在 UISearchDisplayController 自动包装它的 searchContentsController UIPopoverController . 这真是太棒了,因为每件事都能完美地工作,除了我不能引用这个UIPopoverController来消除它:(

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

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

    3 回复  |  直到 16 年前
        1
  •  11
  •   jrtc27    16 年前

    做 [searchDisplayController setActive:NO animated:YES]; 那就不行了?

        2
  •  1
  •   Rod    15 年前

    上述解决方案对我都不管用,但我用以下方法解决了:

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

    这样光标停留在字段中,但没有结果时popover将被取消。

    完整代码:

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

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

    推荐文章