Ir para conteúdo
Visualizar no app

Uma forma melhor de navegar. Saiba mais.

MM Fórum

Um app em tela cheia na sua Tela de Início com notificações push, avisos e mais.

Para instalar este app no iOS/iPadOS
  1. Toque no ícone de Compartilhamento no Safari
  2. Role o menu e toque em Adicionar à Tela de Início.
  3. Toque em Adicionar no canto superior direito.
Para instalar este app no Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Problemas ao usar o sleep do iOS e atualizar telas

Featured Replies

Postado

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

  • Respostas 3
  • Visualizações 452
  • Criado
  • Última resposta

Top Postadores Neste Tópico

Dias Populares

Postado

Modo mais rápido de resolver isso:

 

[self performSelectorInBackground:@selector(minhaThread:) withObject:nil];

 

 

e nesta função "minhaThread" vc deixa o loop rodando ;)

Postado
  • Autor

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...");
         }
     }
}
Postado
  • Autor

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];
    }
}

Participe do debate

Você pode postar agora e se registrar depois. Se você tem uma conta, entre agora para postar com ela.

Visitante
Responder este tópico…

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conta

Navegação

Buscar

Buscar

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.