用户使用 UISearchBar 时更改 UIStatusBarStyle

Posted

技术标签:

【中文标题】用户使用 UISearchBar 时更改 UIStatusBarStyle【英文标题】:Changing UIStatusBarStyle when user uses UISearchBar 【发布时间】:2013-12-21 22:38:15 【问题描述】:

我整天都在努力解决这个问题。我的应用程序有一个夜间主题,但是当您在显示结果后触摸键盘和 UISearchBar 之间的区域时会出现问题,因为这不会触发 UISearchBar 的取消方法。我的应用程序的日主题(正常)一切正常,但是在尝试将状态栏设置为默认样式时出现问题。重申一下:问题是这样发生的:启用夜间模式,在 UISearchBar 中键入一个字母,它没有显示任何结果,用户在表格视图上触摸和滚动,这会触发 UISearchBar 的 do end 编辑方法(键盘然后关闭),进而使状态栏样式错误。

感谢您提供的任何帮助!

代码:

- (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】:

使用我在另一个 *** 问题中提供的答案解决了这个问题:How to show a UISearchBar from top of screen for table view controller

【讨论】:

以上是关于用户使用 UISearchBar 时更改 UIStatusBarStyle的主要内容,如果未能解决你的问题,请参考以下文章

如果单击 UISearchBar,则更改 UITableView 位置:[使用 ModernSearchBar]

UISearchBar-更改范围而不使表格变灰?

更改 UISearchBar 内 CLEAR 按钮的 Tint 颜色 NOT CANCEL BUTTON

使用 UISearchBar 过滤数组

当 UISearchbar 点击时从私人有效用户设置中读取

动态更改 UISearchBar 的键盘类型