Title is quite self explanatory, but I have some animation being done in a loop triggered by CADisplayLink. However, as soon as I scroll a UIScrollView I have added to my view hierarchy, the animation stops immediately, only to return again when scrolling has completely stopped and come to a standstill....
Anyway to cancel this behaviour?
Here you can find a better (and more complex) solution:
Animation in OpenGL ES view freezes when UIScrollView is dragged on iPhone
that allows you to use 'NSRunLoopCommonModes' and avoids OpenGL freezing when holding a finger without scrolling.
This is related to what Doug found (setting the frame interval of CADisplayLink to 2 instead of 1 fixing UIScrollView).
Actually CADisplayLink support multiple RunloopMode. try this:
I found that if I set the frame interval to 2 instead of 1 (so 30 frames a second) everything works fine. So what I'm doing is setting it to 2 when my popover comes up and resetting it to 1 when it dismisses.
You can also mitigate the effects of this issue by using
NSRunLoopCommonModes
instead ofNSDefaultRunLoopModes
:Use
UITrackingRunLoopMode
. It's specifically designed for scrolling stuffs.Otherwise, just call render & present routine at
-scrollViewDidScroll
.UIScrollView broken and halts scrolling with OpenGL rendering (related CADisplayLink, NSRunLoop)
We fixed this same issue by changing the
frameInterval
from 1, to 2. This essentially halves the rendering rate of your OpenGL scene, but it still may render sufficiently for your needs.