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: methodand-performSelector:withObject:afterDelay: c'è qualche altro modo per respingerlo? grazie per tutte le idee!

È stato utile?

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];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top