qui è il mio codice:iOS 6.1.2 - Perché UIAlertView non può essere ignorato? sfondo ancora sullo schermo
UIAlertView *someError = [[UIAlertView alloc] initWithTitle:nil message:@"Server Error!" delegate:nil cancelButtonTitle: @"ok" otherButtonTitles: nil];
[someError show];
Quando si tocca il pulsante OK, sullo sfondo avviso ancora lì, e mi toccare lo schermo, la barra di stato lampeggia.
ho trovato alcune risposte, ma non funzionano, ho cambiato il mio codice per:
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *someError = [[UIAlertView alloc] initWithTitle:nil message:@"Server Error!" delegate:nil cancelButtonTitle: @"ok" otherButtonTitles: nil];
[someError show];
});
o impostare il delegato:
dispatch_async(dispatch_get_main_queue(), ^{
UIAlertView *someError = [[UIAlertView alloc] initWithTitle:nil message:@"Server Error!" delegate:self cancelButtonTitle: @"ok" otherButtonTitles: nil];
[someError show];
});
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
dispatch_async(dispatch_get_main_queue(), ^{
[alertView dismissWithClickedButtonIndex:buttonIndex animated:NO];
});
}
ancora non funziona, allora provo a:
UIAlertView *someError = [[UIAlertView alloc] initWithTitle:nil message:@"error" delegate:nil cancelButtonTitle: @"ok" otherButtonTitles: nil];
[someError performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO];
non funzionare, pazzo, questo non è un lavoro troppo:
[self performSelectorOnMainThread:@selector(showAlert:) withObject:@"error", nil) waitUntilDone:NO];
// the show Alert function
-(void)showAlert:(NSString*)str
{
UIAlertView *someError = [[UIAlertView alloc] initWithTitle:nil message: str delegate: nil cancelButtonTitle: @"ok" otherButtonTitles: nil];
[someError performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO];
}
non funziona ancora.
prima e dopo lo spettacolo di allarme:
Ho provato, ma non funziona anche, la casella di avviso è stata chiusa, ma lo sfondo nero è ancora sullo schermo come lo screenshot.Io ho NSlog nel delegato di alertView, è stato chiamato. Come posso rimuovere lo sfondo manualmente? – yellow
Hmmmm ... se questo metodo delegato è nel tuo controller di visualizzazione, prova "[self becomeFirstResponder];" "dopo aver chiuso l'avviso. –
Michael Dautermann, non funziona ancora ... non posso mostrare lo sfondo quando popup di avviso? – yellow