UITiew在UITextField子视图成为FirstRirstResponder之后返回其初始帧

时间:2015-06-20 20:45:19

标签: ios objective-c uitextfield uiviewanimation

我有一个UIView子类,它包含一个UITextField作为子视图。我的想法是动画这个UIView并在动画结束时使UITexField成为FirstFirstResponder。出于某种原因,在执行了动画完成块并且UITextField已经成为FirstResponder之后,UIView返回到其初始帧。

这是虚拟样本代码:

function removeDiv (){
$('#divPlay').removeClass("visible").addClass("hidden");
}

<a onclick="removeDiv()">Remove</a>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您是否在界面构建器中创建了redView?如果是这样,它将附加布局约束。

您可以在运行时删除它们。尝试在调用setFrame

之前添加此项

[self.redView removeConstraints:self.redView.constraints];

此外,您可以尝试在动画块之前计算目标帧(因为您根据当前帧计算redFrame的新帧)。

- (IBAction)animateRedView:(id)sender
{
    CGRect redViewFrame = self.redView.frame;
    CGRect newFrame = CGRectMake((self.view.frame.size.width - redViewFrame.size.width),
                                 redViewFrame.origin.y,
                                 redViewFrame.size.width,
                                 redViewFrame.size.height);
    [UIView animateWithDuration:.5
                          delay:0
         usingSpringWithDamping:1.2
          initialSpringVelocity:5
                        options:0
                     animations:^{
                         [self.redView setFrame:newFrame];
                     } completion:^(BOOL finished) {
                         [self.textField becomeFirstResponder];
                     }];
}