我有一个 OpenGLES 应用程序,带有一个 CADisplayLink(在 NSRunLoopCommonModes 中添加),用于调用主循环(我在其中执行所有 OpenGL 调用)。
我添加了一个 UIScrollView,但它随机卡住了。如果我将应用程序发送到后台,当我返回时,有时它可以完美运行,而另一些则卡住(我可以移动它,但放手时它不会滑动)。
追踪问题,我注意到 UIScrollView 的内部函数 _ smoothScrollWithUpdateTime : 没有被调用。显然,它使用自己的 CADisplayLink 来获取该调用。所以我尝试添加自己的 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:我有两个 CADisplayLink,其中一个不工作。