Pergunta

Estou codificando um aplicativo que funciona muito parecido com o clima da Apple. No meu código, implementei o - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView Método para descobrir quando o usuário passou para uma nova página. Se eles se mudarem para uma nova página, carrego os dados das páginas adjacentes, para tornar mais rápido a troca de página mais rapidamente. (Em um dos exemplos da Apple, o - (void)scrollViewDidScroll:(UIScrollView *)sender é usado, mas isso faz com que meu aplicativo pendure em breve ao carregar uma nova página, para que não seja adequado.) Esse código funciona muito bem.

estou a usar scrollRectToVisible:: Para rolar programaticamente dentro do scrollView quando o usuário clicar no uiPageControl. O problema é que o scrollRectToVisible: Não publica uma notificação no UIScrollViewDelegate quando terminar de rolar - portanto, o código responsável pelo carregamento de páginas adjacentes nunca é chamado ao usar o uiPageControl.

Existe alguma maneira de fazer com que o UIScrollView notifique seu delegado quando for chamado pelo scrollRectToVisible: método? Ou terei que usar threads para impedir que meu aplicativo congele?

Obrigado!

- Ry

Foi útil?

Solução

Que tal -scrollViewDidEndScrollingAnimation:?

Se não funcionar, tente ouvir o UITextSelectionDidScroll notificação. (Claro, não é documentado.)

Como alternativa, um método SDK-Safe é medir o tempo gasto para a animação e enviar uma notificação atrasada no local de chamada de -scrollRectToVisible:.

Outras dicas

Você pode adicionar este método delegado: em vez disso:

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

A visualização de rolagem chama esse método no final de suas implementações do UIScrollView e SetContentoffSet: Animated: e ScrollRectTovisible: Animated: Methods, mas apenas se for solicitada as animações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top