我一直在努力解决这个问题。我的应用程序有一个夜间主题,但是当你在显示结果后触摸键盘和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];
}
}
答案 0 :(得分:0)
使用我在其他StackOverflow问题上提供的答案解决了这个问题:How to show a UISearchBar from top of screen for table view controller