“UIWindowLevelStatusBar + 1”奇怪的键盘行为

时间:2012-12-25 15:00:44

标签: iphone objective-c ios cocoa-touch uiwindow

appDelegate中的此代码使我的应用表现得很奇怪

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.windowLevel = UIWindowLevelStatusBar + 1;
    return YES;
}

从功能[myTextView resignFirstResponder]隐藏键盘时,我的键盘在视图下方消失,而不是按原样向下滑动。

改变这个的最佳方法是什么?为什么UIWindowLevelStatusBar + 1搞乱了所有的应用结构?

修改

我要做的是在statusBar之上创建一个视图。是否UIWindowLevelStatusBar + 1以{错误的方式设置appDelegate

3 个答案:

答案 0 :(得分:2)

伙计,我知道这是2岁,但现在就是这样:

适用于iOS 7和8,未在9个测试版上测试过。

我在状态栏中添加了一个滚动条。是的,我知道苹果不喜欢它,但是用户可以选择在其他地方使用它。

在app Delegate中,当你想要隐藏状态栏的内容(载体,小时,电池)时,你可以打电话:

self.window.windowLevel = UIWindowLevelStatusBar+1;

确定

问题是找出如何取回内容,对吧?那也是我的问题。这是:

self.window.windowLevel = UIWindowLevelStatusBar-1;

再见

答案 1 :(得分:1)

键盘也存在于一个窗口中(屏幕上的所有内容都有),并且该窗口的级别低于窗口的级别。

为什么要将窗口设置得如此之高?如果你告诉我们你想要完成什么,我们或许可以提出另一种方法。

答案 2 :(得分:0)

隐藏状态栏并简单设置导航栏的框架。

CGRect statusFrame = [UIApplication sharedApplication].statusBarFrame;
[[UIApplication sharedApplication] setStatusBarHidden:YES];
self.navigationController.navigationBar.frame = CGRectMake(0, statusFrame.size.height, 320,46);
[[AppDelegate instance].window addSubview:statusView];