iphone – UILabel更新停止在滚动UIScrollView

我有一个scrollView与其中的imageView。 scrollView是superView的subView,而imageView是scrollView的subView。
我还有一个标签(在超级视图级别),每毫秒从NSTimer接收更新的值在其文本属性。

问题是:
在滚动期间,标签停止显示更新。当滚动结束时,标签上的更新重新启动。当更新重新启动时,它们是正确的;这意味着label.text值按预期更新,但是在滚动时,更新显示将覆盖某处。
我想在标签上显示更新,无论是否滚动。

以下是实施标签更新的方法:

- (void)startElapsedTimeTimer {

     [self setStartTime:CFAbsoluteTimeGetCurrent()];
     NSTimer *elapsedTimeTimer = [NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(updateElapsedTimeLabel) repeats:YES];
}

- (void)updateElapsedTimeLabel {

    CFTimeInterval currentTime = CFAbsoluteTimeGetCurrent();
    float theTime = currentTime - startTime;

    elapsedTimeLabel.text = [NSString stringWithFormat:@"%1.2f sec.", theTime];
}

感谢任何帮助。

我最近也有同样的麻烦,发现解决方案在这里:My custom UI elements…

简而言之:当您的UIScrollView滚动时,NSTimer不会更新,因为运行循环以不同的模式运行(NSRunLoopCommonModes,用于跟踪事件的模式)。

解决方案是在创建后将您的计时器添加到NSRunLoopModes:

NSTimer *elapsedTimeTimer = [NSTimer scheduledTimerWithTimeInterval:0.001 
                                                             target:self 
                                                           selector:@selector(updateElapsedTimeLabel) 
                                                           userInfo:nil 
                                                            repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:elapsedTimeTimer 
                             forMode:NSRunLoopCommonModes];

(代码来自上面链接的帖子)。

http://stackoverflow.com/questions/5377914/uilabel-updating-stops-during-scrolling-uiscrollview

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iphone – UILabel更新停止在滚动UIScrollView