Notificações do UIScrollView
-
25-09-2019 - |
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
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.