用户使用UISearchBar时更改UIStatusBarStyle

时间:2013-12-21 22:38:15

标签: ios objective-c ios7 uisearchbar uistatusbar

我一直在努力解决这个问题。我的应用程序有一个夜间主题,但是当你在显示结果后触摸键盘和UISearchBar之间的区域时会出现问题,因为这不会触发UISearchBar的cancel方法。一切都适用于我的应用程序日主题(正常),但在尝试将状态栏设置为默认样式时出现问题。重申:问题是这样的:启用夜间模式,在UISearchBar中键入一个字母,它没有显示结果,用户触摸并滚动表视图,触发UISearchBar的结束编辑方法(键盘然后被解除),然后进行状态栏错误的风格。

感谢您提供的任何帮助!

代码:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
    [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault];

    return YES;
}

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    if (appDelegate.nightThemeEnabled == NO)
    {
        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault];
    }
    else
    {
        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
    }
}

- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar
{
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

    if (appDelegate.nightThemeEnabled == NO)
    {
        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleDefault];
    }
    else
    {
        [[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent];
    }
}

1 个答案:

答案 0 :(得分:0)

使用我在其他StackOverflow问题上提供的答案解决了这个问题:How to show a UISearchBar from top of screen for table view controller