我有一个带登录/注册视图控制器的应用程序。默认情况下,注册表单在屏幕外,并在用户按下注册按钮时滑入。
在iOS8上,通过单击注册表单上的一个文本字段打开键盘会使视图重置为其故事板位置(即屏幕外的注册表单)。
我尝试将注册视图设置在故事板中的顶部,但将其隐藏在viewDidLoad中。按其中一个登录字段会使注册视图突然显示在顶部。
所以问题似乎是键盘从故事板重新加载视图位置。或者也许是autolayout?
对此有任何帮助表示赞赏
更新
我禁用了自动布局,问题似乎已修复。但是我想使用自动布局,所以这不是很好。
编辑代码
这是用于将注册表单视图移动到位的代码。它在
中移动视图- (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)];
}];
}
答案 0 :(得分:2)
通过动画限制而不是视图本身来修复。
在界面构建中,我将IBOutletConnection
设置为相关约束(在本例中为superview的前沿)并更改了动画块中的constraint.constant
。
为了使其成为动画调用view.layoutIfNeeded
注意:在iOS8中,您需要在要移动的视图的超级视图上调用.layoutIfNeeded