iOS - ScopeBar在TabBarController中的UISearchController中重叠SearchBar

时间:2018-01-22 22:58:46

标签: ios objective-c uisearchbar uisearchcontroller

关于我的UISearchBar下显示的范围栏,我遇到了一个特殊的问题。 基本上,我之前遇到的问题是,每当我的UISearchController处于活动状态并且用户切换标签时,如果他回到包含UISearchController的UIViewController,背景就会转回。 通过将UIViewController嵌入到UINavigationController中解决了这个问题。

现在,出现了一个新问题。当我在UISearchController已经激活的情况下切换标签时,当我切换回来时,UIScopeBar会显示在UISearchBar的顶部。这只能通过取消搜索并重新开始来解决。

插图: enter image description here

我试过隐藏以下代码:

-(void)viewWillAppear:(BOOL)animated{
if(self.searchController.isActive){
    [self.searchController.searchBar setShowsScopeBar:TRUE];
}
}

-(void)viewDidDisappear:(BOOL)animated{
    if(self.searchController.isActive){
        [self.searchController.searchBar setShowsScopeBar:FALSE];
    }
}

无济于事。如果有人对这个有诀窍,我很乐意尝试一下。

1 个答案:

答案 0 :(得分:0)

每次生成视图时以编程方式设置约束并返回到该选项卡可以通过将UIScopeBar保持在距离顶部固定的距离来实现。您也可以尝试在UIScopeBar和UISearchBar之间设置约束。

NSLayoutConstraint *topSpaceConstraint = [NSLayoutConstraint constraintWithItem:self.view
                                                                             attribute:NSLayoutAttributeTop
                                                                             relatedBy:NSLayoutRelationEqual
                                                                                toItem:UIScopeBar 
                                                                             attribute:NSLayoutAttributeTop
                                                                            multiplier:1.0
                                                                              constant:5.0];
[self.view addConstraint:topSpaceConstraint];

如果这不能解决问题,那么您需要为我/这里的人提供更多代码来复制您所拥有的错误。