iOS 8键盘将视图控制器重置为故事板位置

我有一个带登录/注册视图控制器的应用程序.默认情况下,注册表单在屏幕外,并在用户按下注册按钮时滑入.

在iOS8上,通过单击注册表单上的一个文本字段打开键盘会使视图重置为其故事板位置(即屏幕外的注册表单).

我通过将注册视图设置为在故事板中覆盖在顶部,但将其隐藏在viewDidLoad中来尝试它.按其中一个登录字段会使注册视图突然显示在顶部.

所以问题似乎是键盘从故事板重新加载视图位置.或者也许是自动布局?

对此有任何帮助表示赞赏

更新

我禁用了自动布局,问题似乎已修复.但是我想使用自动布局,所以这不是很好.

编辑代码

这是用于将注册表单视图移动到位的代码.它会移动视图

- (IBAction)openRegisterForm:(id)sender {
    _registrationViewOpen = YES;
    [UIView animateWithDuration:0.5f
                 animations:^{
                     [[self leftBar] setFrame:CGRectMake(self.view.frame.size.width - self.leftBar.frame.size.width, 0, self.leftBar.frame.size.width, self.leftBar.frame.size.height )];
                     [registrationForm setFrame:CGRectMake(0.0f, 0.0f, registrationForm.frame.size.width, registrationForm.frame.size.height)];
                 }];
}

最佳答案 通过动画约束而不是视图本身来修复.

在Interface构建中,我将IBOutletConnections设置为相关约束(在本例中为superview的前沿)并更改了animate块中的constraint.constant.

为了使它成为动画调用view.layoutIfNeeded

注意:在iOS8中,您需要在要移动的视图的超级视图上调用.layoutIfNeeded

点赞