我想我在iOS 5.0中发现了一个关于UISearchBar的bug,它的范围栏。我最初显示在XIB中启用的范围栏。UISearchBar范围栏iOS 5.0的错误?
运行期间,范围栏显示正确。但是,当点击搜索文本框并单击取消按钮时,范围栏将从屏幕上移除。屏幕区域仍然可见。查看屏幕截图。
如果有人对如何解决此问题有一个想法,请让我知道。
谢谢。凯。
我想我在iOS 5.0中发现了一个关于UISearchBar的bug,它的范围栏。我最初显示在XIB中启用的范围栏。UISearchBar范围栏iOS 5.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;
}
祝你好运,
达明
感谢您的快速回复。我想强制范围栏始终保持可见状态。我甚至实现了UISearchBar的子类... – Kay 2012-02-28 10:05:37
您是否覆盖searchBarCancelClicked:在委托中确保它没有做任何事情?另外,你使用的是UISearchDisplayController吗?我明白你的UISearchBar,但控制器呢?我记得我没有在IB提供的UISearchDisplayController,使用UISearchBar时遇到了问题。我只测试了我自己的代码,当我点击取消时,tableview清除。这就是你想要发生的事情吗? – 2012-02-28 10:19:00
是的,我使用UISearchDisplayController,是的,我也没有实现searchBarCancelClicked:没有结果! :-( – Kay 2012-02-28 10:24:33
尝试实施“searchBarShouldEndEditing”代表当搜索栏中存在重新启用范围吧。
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
self.searchBar.showsScopeBar = YES;
[self.searchBar sizeToFit];
self.tableView.tableHeaderView = self.searchBar;
return YES;
}
你可以阅读更多有关此解决方案here
我有同样的问题。设置searchBar.showsScopeBar没有视觉效果。 showsScopeBar getter返回YES,但不会出现范围条。 – Dustin 2012-04-09 21:16:48