如何在 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

您可以从这里下载示例:https://github.com/alextarrago/text-field-test

我终于找到了答案。 我做了以下步骤。

  1. 清理我的项目,
  2. 启用然后再次禁用自动布局。
  3. 在 xib 和 swift 文件中为这些文本字段设置委托。
  4. 然后编码:

         `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
}