becomeFirstResponder重置其他视图的x / y位置

时间:2015-03-02 21:18:38

标签: ios swift uiview uitextview becomefirstresponder

我正在两个UITextField上做一些动画。当一个文本字段完成编辑时,我使用UIView.animateWithDuration为左边的第一个文本字段设置动画,然后再调用UIView.animateWithDuration来显示第二个文本字段以进行编辑。

问题是,当我在第二个文本字段上调用becomeFirstResponder()时,它会在第一个ui文本字段上恢复新的x / y坐标。

怎么回事?

修改

提供的代码

func animateMe() {
    UIView.animateWithDuration(0.5, delay: 0, options: .CurveEaseOut, animations: {
        self.onText.frame.offset(dx: self.onText.frame.size.width / -4 * 3 - 10, dy: 0)
        }, completion: { finished in
            println("one shown!")
            self.oneText.frame.offset(dx: self.onText.frame.size.width / -4 * 3 - 10, dy: 0)
            self.twoText.becomeFirstResponder() //undoes the whole animation
    })
}

2 个答案:

答案 0 :(得分:0)

在UIView动画方法的完成块中,将UITextfield的框架设置为目标新位置。

,动画不会对你这样做,这是违反直觉的,但解释太长了。

答案 1 :(得分:0)

如果您使用约束来创建原始位置,则弹出键盘时可能会刷新布局,这会将文本框恢复到约束所说的位置。

如果是这种情况,您可能需要在layoutSubviews中设置文本字段最终帧。这样你就可以继续覆盖默认布局。只有当它应该被折叠时才这样做,所以当它应该被弹回时。

相关问题