警告コントローラの呼び出しをあまりにも早く終了すると、警告メッセージが表示されなくなります。たとえば、アラートコントローラを表示して直ちに棄却しようとすると、その拒否は無視されます。たとえば、UIAlertControllerをあまりにも早く終了しようとすると、警告が却下されない
// Done in viewDidLoad
let alertController = UIAlertController(title: nil, message: "Connecting to Bubble Centerpiece...\n\n", preferredStyle: .alert)
present(alertController, animated: true, completion: nil)
alertController.dismiss(animated: true, completion: nil)
このコードでは、AlertControllerは破棄されません。私のケースでは、私の解任は、警報コントローラが提示されてから約0.5秒後に通常呼び出され、解雇されませんでした。私は手動でこれを動作させるためにこのような拒否コードを遅延させなければならなかった。
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: { self.alertController.dismiss(animated: true, completion: nil)})
私の仮定は棄却コールがアラートよりも早く到着した場合、警告コントローラが適切に設定することに時間がかかり、ということであるが、実際に表示され、それが却下されることはありません。私はDispatchQueueでそれを遅らせるのではなく、より洗練された解決方法があるのだろうかと思いました。
をあなたが提示し、すぐにアラートを却下するためにどのような理由がありますか?可能な解決策の1つは、独自のUIAlertControllerを作成して、viewDidLoadメソッドで自身を終了させることです。 – milesper
完了ブロックで却下しようとすることができます – ClemensL
アクティビティに入ると警告が表示され、Bluetooth接続が確立されたという通知を受け取るまでアクティブのままです。ブルートゥース通信を確立するには、時には0.5秒から4秒の間が必要です。これは、時折、切断呼び出しが速く行われる理由です。 – Saik