编辑开始后,关闭UISearchBar中的范围栏

时间:2011-07-22 21:18:37

标签: iphone ios4 uisearchbar uisearchdisplaycontroller

我有一个UISearchBar及其各自的搜索显示控制器通过InterfaceBuilder在xib文件中布局。搜索栏在Interface Builder中配置为“显示范围栏”未选中。但是,一旦文本输入在搜索栏中开始并显示“搜索覆盖”,UISearchBar就会显示,其中Scope Bar有2个按钮,默认为“Title”。

如何在SearchBar编辑开始时确保未显示范围栏?

我在管理搜索栏的ViewController类中尝试过这些:

- (void)viewDidLoad
{    
    UISearchBar *searchBar = self.searchDisplayController.searchBar;
    NSLog(@"Scopebar is visible? %@", searchBar.showsScopeBar == YES ? @"YES" : @"NO");
    searchBar.showsScopeBar = NO; // Doesn't seem to have an effect
}

#pragma mark - UISearchBarDelegate methods
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsScopeBar:NO]; // doesn't seem to work either
    return YES;
}

Apple的示例代码TableSearch,用于说明搜索在搜索开始后具有4按钮范围栏。

1 个答案:

答案 0 :(得分:26)

如果您查看InterfaceBuilder,您将在“显示范围栏”复选框下方的“范围标题”列表中看到“标题”两次。选中复选框后,InterfaceBuilder会添加它们。取消选中时,它不会删除它们,但是当您单击正在运行的应用程序中的“搜索”框时,它们仍会显示。在InterfaceBuilder中,暂时重新启用“显示范围栏”复选框,以允许您选择每个“标题”行,然后单击“ - ”按钮将其删除。然后取消选中“显示范围栏”。你不应该再看到它们了。