我有一个UIView子类,它包含一个UITextField作为子视图。我的想法是动画这个UIView并在动画结束时使UITexField成为FirstFirstResponder。出于某种原因,在执行了动画完成块并且UITextField已经成为FirstResponder之后,UIView返回到其初始帧。
这是虚拟样本代码:
function removeDiv (){
$('#divPlay').removeClass("visible").addClass("hidden");
}
<a onclick="removeDiv()">Remove</a>
有什么想法吗?
答案 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];
}];
}