Анимация встряхивания для пустого текстового поля в UIAlertAction - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь заставить UIAlert дрожать, когда текстовое поле в предупреждении пусто, я использую это текстовое поле для добавления элементов в мой массив, а с помощью кода, который я использовал, он не добавляет любые пустые значения в моем списке, но не остаются на UIAlertAction , поэтому, очевидно, дрожащая анимация тоже не отображается, это мой код:

let action = UIAlertAction(title: "Add Item", style: .default) { (action) in
    if textField.text?.isEmpty ?? true    {
        let animation = CABasicAnimation(keyPath: "position")
        animation.duration = 0.07
        animation.repeatCount = 4
        animation.autoreverses = true
        animation.fromValue = NSValue(cgPoint: CGPoint(x: textField.center.x - 10, y: textField.center.y))
        animation.toValue = NSValue(cgPoint: CGPoint(x: textField.center.x + 10, y: textField.center.y))
        textField.layer.add(animation, forKey: "position")
    } else {
        self.itemArray.append(textField.text!)
        self.tableView.reloadData()
    }  
}

1 Ответ

0 голосов
/ 09 января 2019

Здесь две вещи, во-первых, чтобы помочь вам, я добавляю расширение для функции встряхивания:

extension UIView {
    func shake(duration timeDuration: Double = 0.07, repeat countRepeat: Float = 3){
        let animation = CABasicAnimation(keyPath: "position")
        animation.duration = timeDuration
        animation.repeatCount = countRepeat
        animation.autoreverses = true
        animation.fromValue = NSValue(cgPoint: CGPoint(x: self.center.x - 10, y: self.center.y))
        animation.toValue = NSValue(cgPoint: CGPoint(x: self.center.x + 10, y: self.center.y))
        self.layer.add(animation, forKey: "position")
    } 
}

Так что для вас использовать может быть просто, как, "ваш взгляд" .shake () это проще.

Вторым и самым важным является то, что вы не можете использовать это или даже то, что пытались, потому что UITextField наследуется от UIControl и должен быть от UIView, так что вам нужно просто настроить UITextFiel внутри. UIView и добавьте функциональность встряхивания в UIView, и они потрясут все внутри: D

Если нравится голосование: D: D

...