UISearchDisplayController奇怪的行为(视频)

时间:2013-11-21 00:30:39

标签: ios iphone objective-c interface-builder xcode5

当我将IB(Xcode 5)中的UISearchDisplayController添加到UINavigationController中显示的UIViewController并按下搜索栏时,搜索栏会被黑色半透明视图覆盖。

enter image description here

以下是视频:http://quick.as/ezrc7bq

我还没有触及任何代码,所以我不确定那里发生了什么。

1 个答案:

答案 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;
    }];

}