当我将IB(Xcode 5)中的UISearchDisplayController添加到UINavigationController中显示的UIViewController并按下搜索栏时,搜索栏会被黑色半透明视图覆盖。
以下是视频:http://quick.as/ezrc7bq
我还没有触及任何代码,所以我不确定那里发生了什么。
答案 0 :(得分:2)
这实际上是iOS UISearchBarDisplayController中的一个错误(在UINavigationController中使用时)。默认行为是突出显示文本框,其余视图变暗,但此昏暗视图框架不考虑导航栏高度。
解决此问题的最简单方法是实现searchbar delegate
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller { self.navigationController.navigationBarHidden = YES; } - (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller{ self.navigationController.navigationBarHidden = NO; }
其他替代方案包括修改搜索栏的框架
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller { // animate the search bar to the top ie. y=0 [UIView animateWithDuration:0.25f animations:^{ CGRect frame = controller.searchBar.frame; frame.origin.y = 0; controller.searchBar.frame = frame; }]; }