我有这个奇怪的新问题:这段代码(完美无缺)
[UIView animateWithDuration:0.4 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
CGRect frame = _logoClaim.frame;
frame.origin.y -= 180;
_logoClaim.frame = frame;
} completion:NULL];
将包含UIImageView和UILabel的视图移动到self.view的顶部。
移动的视图取消隐藏UITextField。 当我尝试将文本写入UITextField时,显然会出现键盘。 此时,之前动画的视图返回到原始的开始位置!!!
是什么原因?
答案 0 :(得分:1)
在动画中放置一个完成块并检查完成的值。键盘正在取消动画,完成的bool将为NO。我会在UITextField中禁用输入,直到动画完成。在完成块中执行此操作。
修改强> 看着你的持续时间并重新阅读这个问题,我可能会误认为你的意思。如果这个答案不正确,我会将其删除。
另外,搜索代码中的_logoClaim.frame,以防你在onKeyboardWillAppear上调整它
答案 1 :(得分:0)
您需要为其底部/顶部空间约束创建插座,并在动画块内更新它的常量值。
[UIView animateWithDuration:0.4
...
animations:^{
/*Update the value of the constraint outlet supposing it to be a bottom space constraint*/
_layoutConstraintBottom += 180;
[self.logoClaim layoutIfNeeded];
} completion:NULL];
不要忘记为动画视图调用-layoutIfNeeded。