2017-08-15 2 views
0

In meiner Xamarin iOS App habe ich eine statische Hilfsmethode, die einen Alarmdialog anzeigt. Dieses Dialogfeld muss nach einigen Sekunden automatisch ausgeblendet werden, wenn der Benutzer die Taste OK noch nicht gedrückt hat. Hier ist der vereinfachte Code-Schnipsel:UIAlertController wird nicht gelöscht

UIAlertController dlg = UIAlertController.Create(title, text, 
    UIAlertControllerStyle.Alert); 
dlg.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Cancel, null); 
UIApplication.SharedApplication.KeyWindow.RootViewController. 
    PresentViewController(dlg, true, null); 

Später, wenn die Zeit abgelaufen ist:

t.Elapsed += (s, e) => { 
    dlg.DismissViewController(true, null); 
}; 

Obwohl das Verfahren DismissViewController ist in der Tat aufgerufen bekommt, wird der Dialog nicht vom Bildschirm verschwinden.

Ich versuchte sogar dlg.Dispose() anrufen, aber das half auch nicht.

Kann mir bitte jemand helfen zu verstehen, was ich vermisse? Grüße.

Antwort

3

Der Code in Ereignis Elapsed ist nicht auf dem Hauptthema.

Rufen Sie es auf Main Thread.

t.Elapsed += (s, e) => 
{ 
    InvokeOnMainThread(() => { 
     dlg.DismissViewController(true, null); 
    }); 
}; 
+0

Perfekt. Vielen Dank. – Peter

Verwandte Themen