Śledzenie zdarzeń w widoku UIScrollview blokuje główny wątek. Używam głównego wątku do uruchomienia timera, który napędza niektóre animacje - rezultatem tego jest to, że każda interakcja użytkownika z przewijanym widokiem (przeciąganie go w górę lub w dół, itp.) Powoduje zatrzymanie animacji (działającej na głównym biegu). Czy istnieje sposób obejścia tego?Śledzenie zdarzeń w UIScrollView blokuje główny wątek. Jakieś poprawki?
Próbowałem RTFM o NSRunloop (CFRunLoopAddCommonMode et al), ale jest dość zwięzły, co prowadzi mnie do przekonania, że pomijanie priorytetów zdarzeń/priorytetów wątku jest lepiej unikać. Ktoś ma jakiś wgląd?
W wątku głównym można robić tylko rzeczy związane z interfejsem użytkownika, więc nie ma zastosowania do priorytetów wątków. Ciekawi mnie - czy wiesz, czy NSTimers przestają strzelać, czy uruchamia się timery, ale odmawiają zastosowania zmian wprowadzonych w animacji? Czy animacja została wykonana * na * UIScrollView, lub * w * przewijanym widoku? Czy próbujesz animować i zmieniać to samo, co przewijanie przewijania? (Przewiń widok, itd.)? – Brad
Dzięki, Brad - to, co miałem nadzieję (prawdopodobnie niebezpiecznie) zrobić, to dodać tryb EventTracking do głównego runloopa, co pozwoli mu kontynuować działanie równolegle z runloopem EventTracking. Animowana blokada jest wykonywana w zupełnie innym widoku niż ten zawierający przewijany widok. Aby odpowiedzieć na twoje inne pytanie, NSTimer przestaje strzelać całkowicie. Wydaje się być całkowicie zablokowany przez biznes o wyższym priorytecie śledzenia zdarzeń użytkownika w (niespokrewnionym) UIScrollView. –