iOS 7 UISearchDisplay控制器隐藏了导航控制器的栏

时间:2014-09-02 10:10:04

标签: ios iphone uinavigationcontroller uinavigationbar uisearchdisplaycontroller

我在应用程序上遇到此问题我正在从iOS 6转换到iOS 7。

我在xib中有一个导航栏,在它们下面是一个带有UISearchDisplayController子类的tableview;因为我必须处理搜索默认行为,使搜索栏上升,并通过以下代码隐藏iOS 6下面的导航栏:

-(void)setActive:(BOOL)visible animated:(BOOL)animated
{
    if(self.active == visible)
    {
        return;
    }

    [self.searchContentsController.navigationController setNavigationBarHidden:YES animated:NO];
    [super setActive:visible animated:animated];
    [self.searchContentsController.navigationController setNavigationBarHidden:NO animated:NO];

    if (visible) {
        [self.searchBar becomeFirstResponder];
    } else {
        [self.searchBar resignFirstResponder];
    }
}

现在我想将它转换到iOS 7,行为发生了变化,每当我在搜索栏内写文字时,导航栏就会被隐藏而搜索栏没有上升,搜索结果表被搜索栏重叠,所以导航bar保持隐藏,直到搜索结束。

我想知道这种行为的原因是什么,如何在不隐藏导航栏的情况下保持相同的行为。

提前致谢,感谢所有帮助。

1 个答案:

答案 0 :(得分:1)

就行为原因而言,我认为这是UISearchDisplayController s(以及iOS 8的UISearchController)的标准操作程序。当UINavigationControllerUITableView UISearchBar tableHeaderView时,UITableView s,{{1}}等以非常特殊的方式行事。