ios / objective-c:按下按钮时如何移动视图

时间:2015-12-07 19:54:17

标签: ios objective-c uibutton

要在选择文本字段时移动视图(将文本字段移到视图的垂直中心),我使用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);
    }

感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

您可以在按下提交按钮时在视图控制器中设置一个标志,如果设置了标志,则不在textFieldDidEndEditing上执行滚动动画。

答案 1 :(得分:0)

根据文本字段的textfield委托的所需生命周期,您可以尝试将该textfield的textfield委托设置为nil,作为按下提交按钮时调用的方法中的第一行代码。如果你这样做,那么将不会为该文本字段调用textFieldDidEndEditing委托方法,并且你不会有震动过渡。