2012-02-28 53 views
3

我想我在iOS 5.0中发现了一个关于UISearchBar的bug,它的范围栏。我最初显示在XIB中启用的范围栏。UISearchBar范围栏iOS 5.0的错误?

运行期间,范围栏显示正确。但是,当点击搜索文本框并单击取消按钮时,范围栏将从屏幕上移除。屏幕区域仍然可见。查看屏幕截图。

UISearchBar still shows scope bar view area 如果有人对如何解决此问题有一个想法,请让我知道。

谢谢。凯。

+0

我有同样的问题。设置searchBar.showsScopeBar没有视觉效果。 showsScopeBar getter返回YES,但不会出现范围条。 – Dustin 2012-04-09 21:16:48

回答

0

请澄清你的期望/想要发生的事情。有几种代表方法。这里有两件事情我在SearchBarViewController做:

首先,我做VC是委托:

- (void)viewDidLoad { 
    searchBar.delegate = self; 
} 

关闭并返回到呈现视图控制器(我的搜索框是模态):

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 
    [[self presentingViewController] dismissModalViewControllerAnimated:YES]; 
} 

过滤:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { 
    [self filterContentForSearchText:searchString scope: 
    [[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]]; 

    // Return YES to cause the search result table view to be reloaded. 
    return YES; 
} 

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption { 
    [self filterContentForSearchText:[self.searchDisplayController.searchBar text] scope: 
    [[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:searchOption]]; 

    // Return YES to cause the search result table view to be reloaded. 
    return YES; 
} 

祝你好运,

达明

+0

感谢您的快速回复。我想强制范围栏始终保持可见状态。我甚至实现了UISearchBar的子类... – Kay 2012-02-28 10:05:37

+0

您是否覆盖searchBarCancelClicked:在委托中确保它没有做任何事情?另外,你使用的是UISearchDisplayController吗?我明白你的UISearchBar,但控制器呢?我记得我没有在IB提供的UISearchDisplayController,使用UISearchBar时遇到了问题。我只测试了我自己的代码,当我点击取消时,tableview清除。这就是你想要发生的事情吗? – 2012-02-28 10:19:00

+0

是的,我使用UISearchDisplayController,是的,我也没有实现searchBarCancelClicked:没有结果! :-( – Kay 2012-02-28 10:24:33

4

尝试实施“searchBarShouldEndEditing”代表当搜索栏中存在重新启用范围吧。

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar 
{ 
    self.searchBar.showsScopeBar = YES; 
    [self.searchBar sizeToFit]; 
    self.tableView.tableHeaderView = self.searchBar; 
    return YES; 
} 

你可以阅读更多有关此解决方案here