在搜索过程中解除键盘时的顶部条形颜色

时间:2013-11-18 22:50:05

标签: ios ios7 uisearchbar uisearchdisplaycontroller

我的应用程序中有顶部条形颜色,因为导航栏是深棕色的:

Without search

当我点按搜索(此处为Keresés)时,以下代码将顶部栏颜色设置为深色内容:

- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}

所以它看起来像这样:

During search

但是当我在字段中输入内容时,滚动结果列表,键盘解除,顶部栏恢复为白色。我该如何防止这种情况?

Keyboard dismissed

2 个答案:

答案 0 :(得分:0)

在iOS 7中,状态栏样式默认情况下由UIViewController方法-preferredStatusBarStyle的返回值确定。此方法的默认实现返回UIStatusBarStyleDefault

将info.plist键UIViewControllerBasedStatusBarAppearance设置为值NO会返回iOS 7之前的样式,即从共享的UIApplication对象获取状态栏外观

要解决此问题,您有两种选择:

1)在希望状态栏样式为非默认值的所有视图控制器中实现-preferredStatusBarStyle方法

2)将关键字“查看基于控制器的状态栏外观”(UIViewControllerBasedStatusBarAppearance)添加到info.plist文件中,并将其值设置为NO

答案 1 :(得分:0)

解决方案在此评论中:https://stackoverflow.com/a/19513714/511878

摘要:UINavigationController不会将-preferredStatusBarStyle转发给其子女。