如何在 uitextfields 上制作动画在 swift 开始编辑
How to animate on uitextfields begins editing in swift
当 FirstTextfield 变为 FirstResponder 时,我想在 secondTextField 上执行一些动画
在第一响应者辞职后,动画应该在第二个文本字段中倒退。我怎样才能在 swift 中做到这一点?
注意:这与出现在键盘上将文本字段移动到顶部不同。
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
if(textField == firstTextField) {
UIView.animateWithDuration(1.0, animations: {
self.secTextField.frame = CGRectMake(self.secTextField.frame.origin.x + 500, self.secTextField.frame.origin.y, self.secTextField.frame.size.width, self.secTextField.frame.size.height) })
}
return true
}
我想要做的是,当用户输入 firstTextField 时,secTextField 应该消失并隐藏起来。
实际发生的是 secTextField 从看不见的地方回到它原来的位置
您可以使用 UITextField 的委托方法来实现这一点。如果你解释更多关于你的动画我也可以帮助你。
func textFieldDidBeginEditing(textField: UITextField) {
if textField == self.firstTextField {
UIView.animateWithDuration(2, delay: 0, options: nil, animations: { () -> Void in
self.secondTextField.frame = CGRectOffset(self.secondTextField.frame, 500, 0)
}, completion: nil)
}
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if textField == self.firstTextField {
UIView.animateWithDuration(2, delay: 0, options: nil, animations: { () -> Void in
self.secondTextField.frame = CGRectOffset(self.secondTextField.frame, -500, 0)
}, completion: nil)
}
textField.resignFirstResponder()
return true
}
不要忘记在 UITextField 对象上设置委托(在您的 viewDidLoad 上)
self.firstTextField.delegate = self
self.secondTextField.delegate = self
我终于找到了答案。
我做了以下步骤。
- 清理我的项目,
- 启用然后再次禁用自动布局。
- 在 xib 和 swift 文件中为这些文本字段设置委托。
然后编码:
`self.secTextField.frame.origin.x = self.secTextField.frame.origin.x + 500`
就我而言,它对我有用。只需使用 self.view.layoutIfNeeded()
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
if(textField == firstTextField) {
UIView.animateWithDuration(1.0, animations: {
self.secTextField.frame = CGRectMake(self.secTextField.frame.origin.x + 500, self.secTextField.frame.origin.y, self.secTextField.frame.size.width, self.secTextField.frame.size.height)
self.view.layoutIfNeeded()
})
}
return true
}
当 FirstTextfield 变为 FirstResponder 时,我想在 secondTextField 上执行一些动画
在第一响应者辞职后,动画应该在第二个文本字段中倒退。我怎样才能在 swift 中做到这一点?
注意:这与出现在键盘上将文本字段移动到顶部不同。
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
if(textField == firstTextField) {
UIView.animateWithDuration(1.0, animations: {
self.secTextField.frame = CGRectMake(self.secTextField.frame.origin.x + 500, self.secTextField.frame.origin.y, self.secTextField.frame.size.width, self.secTextField.frame.size.height) })
}
return true
}
我想要做的是,当用户输入 firstTextField 时,secTextField 应该消失并隐藏起来。 实际发生的是 secTextField 从看不见的地方回到它原来的位置
您可以使用 UITextField 的委托方法来实现这一点。如果你解释更多关于你的动画我也可以帮助你。
func textFieldDidBeginEditing(textField: UITextField) {
if textField == self.firstTextField {
UIView.animateWithDuration(2, delay: 0, options: nil, animations: { () -> Void in
self.secondTextField.frame = CGRectOffset(self.secondTextField.frame, 500, 0)
}, completion: nil)
}
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if textField == self.firstTextField {
UIView.animateWithDuration(2, delay: 0, options: nil, animations: { () -> Void in
self.secondTextField.frame = CGRectOffset(self.secondTextField.frame, -500, 0)
}, completion: nil)
}
textField.resignFirstResponder()
return true
}
不要忘记在 UITextField 对象上设置委托(在您的 viewDidLoad 上)
self.firstTextField.delegate = self
self.secondTextField.delegate = self
我终于找到了答案。 我做了以下步骤。
- 清理我的项目,
- 启用然后再次禁用自动布局。
- 在 xib 和 swift 文件中为这些文本字段设置委托。
然后编码:
`self.secTextField.frame.origin.x = self.secTextField.frame.origin.x + 500`
就我而言,它对我有用。只需使用 self.view.layoutIfNeeded()
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
if(textField == firstTextField) {
UIView.animateWithDuration(1.0, animations: {
self.secTextField.frame = CGRectMake(self.secTextField.frame.origin.x + 500, self.secTextField.frame.origin.y, self.secTextField.frame.size.width, self.secTextField.frame.size.height)
self.view.layoutIfNeeded()
})
}
return true
}