2017-02-04 3 views
1

Когда кнопка нажата на этом UIAlertController, она автоматически отклоняется с анимацией. Могу ли я отключить анимацию?iOS, Swift, UIAlertController, UIAlertAction - Как отключить анимацию при нажатии кнопки?

Я попытался представить как анимированный: false, но все равно увольняется с анимацией.

 func showOKMessage(title: String, message : String) { 
     self.alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) 
     let okAction = UIAlertAction(title: "OK", style: .default) 
     self.alertController.addAction(okAction) 
     self.present(self.alertController, animated: true) 
    } 
+1

вы можете добавить код пожалуйста – Ram

+0

код, пожалуйста, sims, как простое исправление –

+0

В simliar ситуациях я обнаружил, что отключение кнопки является хорошим способом обхода, я не уверен, что это помогло бы в вашем случае без дополнительной информации. –

ответ

1

Первое, что я пытался есть, чтобы создать ВЕДЕНИЯ UIAlertController для обработки, чтобы установить анимацию в dismiss(animated:completion:) для false в обработчике (код, который будет выполняться после того, как вы нажмете кнопку OK) в UIAlertAction :

import UIKit 

class ViewController: UIViewController { 

    var alert: UIAlertController! 

    @IBAction func alertViewButtonPressed(_ sender: UIButton) { 
    alert = UIAlertController(title: "", message: "Hello", preferredStyle: .alert) 
    let action = UIAlertAction(title: "OK", style: .default) { _ in 
     // this code executes after you hit the OK button 
     self.alert.dismiss(animated: false, completion: nil) 
    } 
    alert.addAction(action) 
    self.present(alert, animated: true) 
    } 
} 

К сожалению анимация все еще есть:

enter image description here

Единственный способ, который сработал для меня, - это только override метод dismiss(animated:completion:) и установить анимированный флаг при вызове super на false. Вам также не нужно добавлять код в обработчик, и нет причин создавать ссылку для этого решения. (Примечание: Теперь каждый представленный контроллер представления получает уволенный без анимации в том, что вид контроллера):

import UIKit 

class ViewController: UIViewController { 

    @IBAction func alertViewButtonPressed(_ sender: UIButton) { 
    let alert = UIAlertController(title: "", message: "Hello", preferredStyle: .alert) 
    let action = UIAlertAction(title: "OK", style: .default, handler: nil) 
    alert.addAction(action) 
    self.present(alert, animated: true) 
    } 

    override func dismiss(animated flag: Bool, completion: (() -> Void)? = nil) { 
    // view controller which was presented modally by the view controller gets dismissed now without animation 
    super.dismiss(animated: false, completion: completion) 
    } 
} 

Теперь тревога вид получает уволенный без анимации:

enter image description here

+0

Может ли кто-нибудь предоставить обходное решение для каждого вида предупреждения, а не для всех исправлений? –

Смежные вопросы