メインループ (すべての OpenGL 呼び出しを行う場所) を呼び出すために使用する CADisplayLink (NSRunLoopCommonModes に追加) を備えた OpenGLES アプリがあります。
UIScrollView を追加しましたが、ランダムにスタックします。アプリをバックグラウンドに送信すると、戻ったときに完全に機能することもあれば、スタックすることもあります (移動することはできますが、離してもスライドしません)。
問題を追跡すると、UIScrollView の内部関数 _ SmoothScrollWithUpdateTime : が呼び出されていないことに気付きました。どうやら、その呼び出しを取得するために独自の CADisplayLink を使用しているようです。そこで、独自の CADisplayLink (すべての描画を行うメインのものとは別) を追加しようとしましたが、ランダムに呼び出されていません。コードは次のとおりです。
- (void) addDisplayLink
{
displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(loop:)];
[displayLink setFrameInterval:1];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
}
- (void) loop:(id)sender
{
NSLog(@"Loop working!");
}
何か案は?
TL/DR: 2 つの CADisplayLinks がありますが、そのうちの 1 つが機能していません。