要在选择文本字段时移动视图(将文本字段移到视图的垂直中心),我使用textFieldDidBeginEditing,然后在用户完成时,使用textFieldDidEndEditing将视图移回它开始的位置。
这实现了目标。
然而,当用户按下提交按钮时,上述缺陷是视图在VC消失之前向后移动,从而产生不和谐的过渡。
我希望按钮保持在同一个位置,或者至少可以控制与按钮相关的视图。
有没有办法免除textFieldDidEndEditing中的按钮,或者有一个类似于textFieldDidBeginEditing的方法适用于按钮,因此您可以将它们保留在视图的中心。
这就是我用于textField
的内容-(void)textFieldDidBeginEditing:(UITextField *)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.3];
[UIView setAnimationBeginsFromCurrentState:TRUE];
if ([sender isEqual:_username]) {
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y -70., self.view.frame.size.width, self.view.frame.size.height);
}
else if([sender isEqual:_password]) {
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y -90., self.view.frame.size.width, self.view.frame.size.height);
}
else if([sender isEqual:_Email]) {
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y -110., self.view.frame.size.width, self.view.frame.size.height);
}
感谢您的任何建议。
答案 0 :(得分:0)
您可以在按下提交按钮时在视图控制器中设置一个标志,如果设置了标志,则不在textFieldDidEndEditing
上执行滚动动画。
答案 1 :(得分:0)
根据文本字段的textfield委托的所需生命周期,您可以尝试将该textfield的textfield委托设置为nil,作为按下提交按钮时调用的方法中的第一行代码。如果你这样做,那么将不会为该文本字段调用textFieldDidEndEditing委托方法,并且你不会有震动过渡。