Dario Cardoso Postado 9 de abril de 2013 Denunciar Compartilhar Postado 9 de abril de 2013 Amigos Como de costume em outras linguagens eu uso o sleep para fazer uma transação continua parando de N a N segundos e executando operações especificas Tentei usar o conceito no iOS mas percebi que a tela não consegue ser repintada Alguém sabe como contornar isto ou como proceder para substituir o sleep por algo que repinte a tela Anexo meu projeto de teste que demonstra a falha Dario Teste1Sleep.zip Citar Link para o comentário Compartilhar em outros sites More sharing options...
Hercules Jr Postado 9 de abril de 2013 Denunciar Compartilhar Postado 9 de abril de 2013 Modo mais rápido de resolver isso: [self performSelectorInBackground:@selector(minhaThread:) withObject:nil]; e nesta função "minhaThread" vc deixa o loop rodando Citar Link para o comentário Compartilhar em outros sites More sharing options...
Dario Cardoso Postado 9 de abril de 2013 Autor Denunciar Compartilhar Postado 9 de abril de 2013 Fiz a modificação sugerida conforme mostro no código abaixo mas não resolveu. O ciclo acontece mas a tela não atualiza... - (IBAction)iniciarSleep:(id)sender { [self performSelectorInBackground:@selector(minhaThread:) withObject:nil]; } - (void)minhaThread:(id)sender { label1.text=@"iniciando sleep..."; int contador=0; while (true) { label1.text=[[NSString alloc] initWithFormat:@"contando...%d", contador]; contador++; NSLog(@"sleep 1 segundo..."); sleep(1); if (contador==10) { UIAlertView *alertView = [[uIAlertView alloc] initWithTitle:@"Aviso..." message:@"Chegou a 10 segundos..." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alertView show]; NSLog(@"deveria mostrar o alert aqui..."); } } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Dario Cardoso Postado 9 de abril de 2013 Autor Denunciar Compartilhar Postado 9 de abril de 2013 Amigos, Deu certo, eis o código - (IBAction)iniciarSleep:(id)sender { label1.text=@"Começando..."; // 60 milliseconds is .06 seconds meuTimer=[[NSTimer alloc] init]; meuTimer=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(atualizaSleep:) userInfo:nil repeats:YES]; } - (void)atualizaSleep:(id)sender { //[label1 performSelectorOnMainThread:@selector(setText:) withObject:[[NSString alloc] initWithFormat:@"contando...%d", contador] waitUntilDone:YES]; label1.text=[[NSString alloc] initWithFormat:@"contando...%d", contador]; contador++; NSLog(@"sleep 1 segundo..."); if (contador==10) { UIAlertView *alertView = [[uIAlertView alloc] initWithTitle:@"Aviso..." message:@"Chegou a 10 segundos..." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [alertView show]; } if (contador==20) { contador=0; [meuTimer invalidate]; } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados
Participe do debate
Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.