Pergunta

Enquanto um UIScrollView (ou uma classe derivada dela) está rolando, parece que toda a NSTimers que estão executando get em pausa até que o rolo está terminado.

Existe uma maneira de contornar este problema? Tópicos? A definição de prioridades? Qualquer coisa?

Foi útil?

Solução

Um fácil e simples de implementar solução é fazer:

NSTimer *timer = [NSTimer timerWithTimeInterval:... 
                                         target:...
                                       selector:....
                                       userInfo:...
                                        repeats:...];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

Outras dicas

Para qualquer um usando Swift 3

timer = Timer.scheduledTimer(timeInterval: 0.1,
                            target: self,
                            selector: aSelector,
                            userInfo: nil,
                            repeats: true)


RunLoop.main.add(timer, forMode: RunLoopMode.commonModes)

Sim, Paul está certo, esta é uma questão de loop prazo. Especificamente, você precisa fazer uso do método NSRunLoop:

- (void)addTimer:(NSTimer *)aTimer forMode:(NSString *)mode

Esta é a versão rápida.

timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: aSelector, userInfo: nil, repeats: true)
            NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)

Você tem que correr outro segmento e outro loop prazo, se você quiser temporizadores ao fogo durante a rolagem; desde temporizadores são processados ??como parte do ciclo de eventos, se você estiver ocupada processando rolagem seu ponto de vista, você nunca dar a volta aos temporizadores. Embora a pena de perf / bateria de correr temporizadores em outros tópicos pode não valer a pena lidar com este caso.

para uso ninguém Swift 4:

    timer = Timer(timeInterval: 1, target: self, selector: #selector(timerUpdated), userInfo: nil, repeats: true)
    RunLoop.main.add(timer, forMode: .common)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top