当我开始在uitextfield中输入时,我想要一些动画发生,它不应该反转直到我完成输入。我正在使用此代码进行动画制作:
func textFieldDidBeginEditing(textField: UITextField) {
println("begin")
UIView.animateWithDuration(1.0, animations:{
self.secondTextfield.frame = CGRectMake(self.secondTextfield.frame.origin.x + 500, self.secondTextfield.frame.origin.y, self.secondTextfield.frame.size.width, self.venueTextField.frame.size.height)
})
}
我想要做的是:当我开始在第一个文本字段中输入时,我希望第二个文本字段隐藏在视图之外,当我完成输入时,我希望它能够重新设置动画。
我的问题是:当我开始输入动画时,它会回到原来的位置。它不会等我完成输入。
答案 0 :(得分:0)
textFieldDidEndEditing
才能获得第二个textField。示例:
func textFieldDidBeginEditing(textField: UITextField) {
if textField == firstTextField {
UIView.animateWithDuration(1.0, animations:{
self.secondTextfield.alpha = 0
})
}
}
func textFieldDidEndEditing(textField: UITextField) {
if textField == firstTextField {
UIView.animateWithDuration(1.0, animations:{
self.secondTextfield.alpha = 1
})
}
}
答案 1 :(得分:0)
虽然我不确切知道问题是什么,但我找到了解决问题的合理方法:
为动画定义textField x坐标的自动布局约束设置动画,而不是为动画设置动画。例如,下图包含两个textField。当我开始输入顶部的那个时,我想为底部动画制作动画:
垂直约束是我想要动画的centre x alignment
。为实现此效果,我将@IBOutlet
与NSLayoutConstraint
:
我让我的视图控制器采用UITextFieldDelegate
并实现了三种方法:
extension ViewController: UITextFieldDelegate {
func textFieldDidBeginEditing(textField: UITextField) {
self.c.constant += 100 //c is my constraint
UIView.animateWithDuration(1.0) {
self.view.layoutIfNeeded()
}
}
func textFieldDidEndEditing(textField: UITextField) {
println("textFieldDidEndEditing")
self.c.constant -= 100
UIView.animateWithDuration(1.0) {
self.view.layoutIfNeeded()
}
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
a.resignFirstResponder()
return true
}
}
这种方法需要一些自动布局知道,但我能够达到你想要的效果。