IQKeyboardManager 状态栏(status bar)问题

因为懒,所以具体什么样子,参考下面的链接

具体的问题情况参考:StatusBar background problem #1158

我解决的思路很简单,就是在监听键盘消失的时候,去设置 statys bar 的背景颜色。

因为状态栏并不是消失了,说明不是frame 出了问题,那么我就修改 它的背景颜色。

具体代码:

去替换 IQKeyboardManager.m 中的下面的方法

- (void)keyboardDidHide:(NSNotification*)aNotification
{
CFTimeInterval startTime = CACurrentMediaTime();
[self showLog:[NSString stringWithFormat:@"****** %@ started ******",NSStringFromSelector(_cmd)]];

_topViewBeginRect = CGRectZero;
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {

    statusBar.backgroundColor = [UIColor whiteColor];
}
#ifdef __IPHONE_11_0
if (@available(iOS 11.0, *)) {
self.initialAdditionalSafeAreaInsets = UIEdgeInsetsZero;
}
#endif

_kbSize = CGSizeZero;

CFTimeInterval elapsedTime = CACurrentMediaTime() - startTime;
[self showLog:[NSString stringWithFormat:@"****** %@ ended: %g seconds ******",NSStringFromSelector(_cmd),elapsedTime]];
}

但是由于弹起键盘的控制器导航栏的透明度原因会有一些小问题,所以我干脆就直接不透明。顺便把颜色也写上。这样就看不出来了。先这样改吧。

self.navigationController.navigationBar.translucent = NO; [self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]];
时间: 2024-10-11 09:21:42

IQKeyboardManager 状态栏(status bar)问题的相关文章

启动后再显示状态栏Status Bar

三步即可实现启动程序时不显示状态栏,启动后显示 1. 在Info.plish文件中,Key的最后一项,选择把View controller-based status bar appearance设置为NO 2. 在AppDelegate.m文件中写如下代码 1 // 此方法在启动完毕后调用 2 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchO

iOS7隐藏状态栏 status Bar

转自:http://blog.csdn.net/dqjyong/article/details/17896145 IOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIVIEWCONTROLLER的状态栏与导航栏基本是一体的.因此UIVIEWCONTROLLER的HIDE/SHOW状态的方法也跟其他版本的不一样了. 在IOS7以前的版本,HIDE/SHOW是通过以下代码实现 [cpp] view plaincopy [[UIApplication sharedApplicat

安卓状态栏通知Status Bar Notification

安卓系统通知用户三种方式: 1.Toast Notification 2.Dialog Notification 3.Status Bar Notification Status Bar Notification,状态栏通知 发送一个状态栏通知必须用到两个类:NotificationManager,Notification 1.NotificationManager是一个系统Service,必须通过getSystemService()获取 NotificationManager notifica

自定义状态栏背景(status bar)

公司大设计师只出iOS设计图.新的iOS系统的状态栏(status bar,就是显示时间.电量那个)是透明的,Android 4.4 (Kitkat,api 19)也添加了自定义 status bar 和 navigation bar 的一些api,可以实现同样的效果. --- github上有 SystemBarTint 可以使用,但是很多功能用不到,所以自己实现了下. --- @Override protected void onCreate(Bundle savedInstanceStat

改变status bar的状态

两种改变status bar状态的方法 一 :(全局的) 直接在当前控制器中(一般是在navigationcontroller) //- (UIStatusBarStyle)preferredStatusBarStyle{ //    return UIStatusBarStyleLightContent; //} 二 :(可以更具需要改变状态栏显示效果 //代码如下 [UIApplication sharedApplication].statusBarStyle = UIStatusBarSt

Keyboard、In-Call Status Bar的监听及视图位置改变调整(实例说明)

写于前: 当有textField的时候,键盘出现时,需要改变其他视图的frame,以及来电时In-Call Status Bar的出现也会影响其他视图的frame,那么通过通知模式,来观察两者的变化,并当其变化时进行一些操作. 代码思路:(视图frame的调整,以创建一个简单toolBar为例来实现) 1.底栏的创建,其中textField设置代理,遵循 2.UITextFieldDelegate协议,设置点击return返回键盘消失 3.通知的注册 4.通知的移除,在viewWillDisap

iOS开发-UINavigationBar和Status Bar实用技巧

iOS7之后关于UINavigationBar和Status  Bar都发生了一系列的改变,如果不需要兼容iOS7之后的设备,按照网上有些资料去解决问题会踩到一些坑.在iOS 7中,我们可以修改每个View Controller中状态栏的外观,而iOS7之前的状态栏都是白色风格.iOS7之前设置背景颜色还需要搞个背景View覆盖,而iOS7只需要设置一下barTintColor颜色即可. UINavigationBar设置 1.设置背景颜色: [self.navigationController

iOS 使用Method Swizzling隐藏Status Bar

在iOS 6中,隐藏Status Bar非常的简单. // iOS 6及以前,隐藏状态栏 [[UIApplication sharedApplication] setStatusBarHidden:YES]; 来到了iOS 7的年代以后,需要在UIViewController中指定: #ifdef __IPHONE_7_0 - (BOOL)prefersStatusBarHidden { return YES; } #endif 并通过下列代码刷新状态栏: if ([viewController

iOS-修改Status Bar

一.在info.plist文件中添加一行不但要在 Status bar is initially hidden一行,选择为 YES. 二.在didFinishLaunchingWithOptions方法里添加 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2 3 [UIApplication sharedApplica

IOS开发—禁止视图控制器自动调整status bar的风格

今天项目中的一个问题是当点击第三方库提供的按钮时,由于动画的效果使得status bar字体颜色会自动的变成黑色,但是status bar的背景为黑色,所以看起来就像是status bar消失了一样,但是按钮是第三方库中的内容,无法修改,这里我想到的是禁止status bar中的字体颜色自动改变.具体实现如下: 1.在项目的.plist文件中添加新的key:UIViewControllerBasedStatusBarAppearance 2.设置此key的value为NO 3.在didFinis