Ereignisverfolgung in UIScrollview blockiert den Hauptthread. Ich verwende den Haupt-Thread, um einen Timer auszuführen, der eine Animation antreibt - das Ergebnis ist, dass jede Benutzerinteraktion mit der scrollbaren Ansicht (Ziehen nach oben oder unten usw.) die Animation (die auf dem Haupt-Runloop läuft) zum Einfrieren bringt. Gibt es einen Weg dahin?Die Ereignisverfolgung in UIScrollView blockiert den Hauptthread. Irgendwelche Korrekturen?
Ich habe versucht, RTFM über NSRunloop (CFRunLoopAddCommonMode et al), aber es ist ziemlich knapp, führt mich zu glauben, dass Basteln mit Ereignisprioritäten/Thread-Prioritäten besser vermieden wird. Jeder hat einen Einblick?
Sie können nur UI-Sachen im Hauptthread machen - also würde das Durcheinander mit Thread-Prioritäten nicht zutreffen. Ich bin neugierig - weißt du, ob die NSTimers aufhören zu feuern oder die Timer feuern, aber weigere dich, die Änderungen, die du in der Animation machst, anzuwenden? Ist die Animation * an * der UIScrollView oder * innerhalb * der Scrollansicht? d. h., versuchen Sie, das gleiche zu animieren und zu ändern, das das scrollview scrolling versucht zu ändern? (Scroll-Ansicht, etc.)? – Brad
Danke, Brad - was ich (wahrscheinlich gefährlich) gehofft hatte, war das Hinzufügen des EventTracking-Modus zum Haupt-Runloop, wodurch er gleichzeitig mit dem EventTracking-Runloop weiterlaufen konnte. Die Animation, die blockiert wird, wird tatsächlich in einer anderen Ansicht als der mit der Bildlaufansicht ausgeführt. Um Ihre andere Frage zu beantworten, hört der NSTimer auf, vollständig zu feuern. Es scheint vollständig blockiert zu sein durch das Geschäft mit höherer Priorität beim Verfolgen der Benutzerereignisse auf dem (nicht verwandten) UIScrollView. –