iOS 8方向问题:键盘最终位置不正确

时间:2014-11-14 11:02:33

标签: ios xcode ios8 xcode6 iphone-6

我有一个在xCode 5中创建的iOS通用项目,我试图移植到xCode 6.由于我没有使用LaunchScreen而且iPhone 6和6 Plus扩展了适用于他们的决议。

设备更改其方向时会出现问题。

情景:

仅在iPhone 6和6 Plus上发生。

使用用户名和密码字段打开登录屏幕。将设备旋转到横向,然后点击用户名或密码字段。键盘出现在屏幕中间,半切。旋转回纵向完全隐藏了键盘,无论您点击哪个字段,它都不再出现在屏幕上。

要使键盘返回,请向后旋转至横向,点击字段旋转设备到相对的横向(不要让它以纵向进入)。键盘突然变得正常,行为正常。

Problematic Keyboard

5 个答案:

答案 0 :(得分:5)

我遇到了同样的问题,因为您的应用是以缩放模式启动的
在这种缩放模式下,Apple似乎没有全力以赴地处理景观问题。

解决方案是使用此处指定的技巧切换到iPhone 6-6Plus的非缩放模式:How to enable native resolution for apps on iPhone 6 and 6 Plus?

请注意,这可能会在此过程中打破很多屏幕..但是没有其他解决方案。

答案 1 :(得分:0)

我在应用程序的可扩展模式下遇到了这个问题。虽然支持非scalble模式(通过向xcassets添加iPhone 6& 6+发布图像)解决了这个问题,但在我的情况下不允许因为每个方向的屏幕都有静态布局。 我可以通过避免更改窗口的根视图控制器的事件来解决这个问题。相反,新的视图控制器已添加(平衡删除)作为子视图(因此是childViewController)到现有的根视图控制器。

答案 2 :(得分:0)

在iOS 6/7上一切正常,但不是iOS 8。

iOS 8上键盘的方向与状态栏不同。

答案 3 :(得分:0)

如果您的应用程序仅运行纵向模式,则可以停止生成方向通知;

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

答案 4 :(得分:0)

我遇到过这个问题,经过一些研究后发现了一些东西,导致了这样的错误。 在我的AppDelegate中,我更改了窗口rootViewController,以显示不同的ViewControllers取决于授权状态

if (!auth)
{
    self.viewControllers = @[[[AuthViewController alloc] init]];
} else {
    self.viewControllers = @[[[DataViewController alloc] init]];
}

我删除了这个并将控制器选择逻辑移动到NavigationViewController

npm install body-parser -s

并将此NavigationViewController设为Storyboard初始视图控制器。

希望它有所帮助!