C'è un modo per chiudere un pulsante di UIAlertView non dopo qualche tempo?
-
10-10-2019 - |
Domanda
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"tittle"
message:@""
delegate:self
cancelButtonTitle:@""
otherButtonTitles:nil];
[alertView show];
[alertView release];
voglio dimiss l'alerview dopo che è mostrando per qualche tempo, ma quando l'alertview non ha pulsanti, non funziona se ho invocato -dismissWithClickedButtonIndex:animated: method
and-performSelector:withObject:afterDelay:
c'è qualche altro modo per respingerlo?
grazie per tutte le idee!
Soluzione
-(void)xx {
[self performSelector:@selector(dismissAlertView:) withObject:alertView afterDelay:2];
}
-(void)dismissAlertView:(UIAlertView *)alertView{
[alertView dismissWithClickedButtonIndex:0 animated:YES];
}
questo è it.i fissarlo
Altri suggerimenti
Usa 10 secondi ritardi di licenziare
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"" message:@"" preferredStyle:UIAlertControllerStyleAlert];
[self presentViewController:alertController animated:YES completion:nil];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[alertController dismissViewControllerAnimated:YES completion:^{
p\Perform Action after dismiss alertViewController
}];
});
In Xamarin.iOS / MonoTouch questo ha funzionato per me:
private async Task ShowToast(string message, UIAlertView toast = null)
{
if (null == toast)
{
toast = new UIAlertView(null, message, null, null, null);
toast.Show();
await Task.Delay(2000);
await ShowToast(message, toast);
return;
}
UIView.BeginAnimations("");
toast.Alpha = 0;
UIView.CommitAnimations();
toast.DismissWithClickedButtonIndex(0, true);
}
Ricordate che se un metodo asincrono viene chiamato da un thread in background (non il thread dell'interfaccia utente principale) allora InvokeOnMainThread sarebbe ancora necessaria. Questo significa solo che si chiama il metodo di cui sopra in questo modo:
BeginInvokeOnMainThread(() =>
{
ShowToast(message);
});
aggiornamento della risposta di cui sopra, come UIAlertView
è deprecated
risposta a questo link
2 ° funzione dovrebbe essere simile a questo
-(void)dismissAlertView:(UIAlertController *)alertView{
[alertView dismissViewControllerAnimated:YES completion:nil];
}