我创建了一个动画循环,作为一个操作运行,以保持界面的其余部分响应。虽然已经快到了,但还有一个问题。当用户触摸结束时,我的UIScrollView似乎无法可靠地恢复。这意味着,例如,如果用户在滚动视图上向下拖动,当他们抬起手指时,滚动视图不会弹回原位,滚动条保持可见。好像手指没有离开屏幕。它需要在scrollview上再点击一次,它就会捕捉到正确的位置,滚动条就会消失。。。
下面是我在一个子类操作中创建的循环:
- (void)main
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
_displayLink = [[CADisplayLink displayLinkWithTarget: self selector: @selector(animationLoop:)] retain];
[_displayLink setFrameInterval: 1.0f];
[_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode: NSRunLoopCommonModes];
while (![self isCancelled])
{
NSAutoreleasePool *loopPool = [[NSAutoreleasePool alloc] init];
[runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
[loopPool drain];
}
[_displayLink invalidate];
[pool release];
}
看来,虽然这项行动正在进行,但事情还是有点奇怪。。。
有没有人知道这里可能发生了什么,以及更好的解决方法。。。
谢谢