J'ai une application contenant un UIScrollView avec Paging = OUI et le code de test suivant:Désactiver touches/défilement pendant le traitement
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
sleep(1);
}
Si l'utilisateur exécute plusieurs grands coups au cours de cette 1 seconde sommeil, tous les événements de glissement sont effectuées une fois que le thread principal a été libéré - donnant un effet "sauvage".
Y at-il un moyen de désactiver les touches/balayages pendant que ce travail de blocage est effectué (bien sûr, l'idéal est de ne pas bloquer le fil principal ici, mais pas toujours possible!).
J'ai essayé d'envelopper le «sommeil» avec setUserInteraction = NO/YES
et setScrollingEnabled = NO/YES
mais sans n'importe quelle chance.
Que faites-vous dans le thread principal else donc il est plein de charge? –
Le délai n'est pas vraiment 1 seconde - juste pour la démo. Cela peut être très court, mais tout balayage effectué pendant que certains travaux sont en cours provoque ce comportement. – Egil
Eh bien quoi que vous, vous devez déplacer le traitement à un thread séparé afin que le scrollview reste réactif. –