0

メインループ (すべての 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 つが機能していません。

4

0 に答える 0