iOS 8键盘导致视图控制器返回到故事板位置

4

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

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

我尝试在storyboard中将注册视图设置为与之重叠,但在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)];
                 }];
}

你是如何将视图移动到可见部分的?你是否使用动画来调整相应的约束?如果你能够贴出一些代码就太好了。 - Hannes
1个回答

2

通过对约束进行动画处理来固定视图,而不是直接对视图进行操作。

在界面构建中,我使用 IBOutletConnection 将相关约束(例如从父视图开始的前沿)连接起来,并在动画块中更改 constraint.constant

为了使其动画化,需调用 view.layoutIfNeeded

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接