我有一个NSTimer,每隔几毫秒加载一次,然后将新图像分配到NSImageView中。 NSTimer已经使用各种运行循环(NSRunLoopCommonModes,NSModalPanelRunLoopMode,NSEventTrackingRunLoopMode)进行设置,以便在事件发生时继续执行它正在执行的操作。
这很好用但是当在屏幕上拖动实际窗口时这会停止工作。我已经确认定时器实际上是在拖动期间触发,并且图像也被分配给NSImageView。唯一的问题是当拖动窗口时屏幕内容由于某种原因不刷新。这可能是一个内置的优化,但我想禁用它,以便即使在拖动窗口时,imageview也会继续刷新和重新绘制。
我在NSTimer触发块中尝试了以下内容,但这仍然没有强制刷新和重绘NSImageView的内容:
- (void)animateTimerFired:(NSTimer *)aTimer {
// .... load imageObj
// set image
[imgBackgroundView setImage: imageObj];
// try and refresh the window forcibly
[[imgBackgroundView window] viewsNeedDisplay];
[[imgBackgroundView window] display];
[[imgBackgroundView window] update];
[[imgBackgroundView window] flushWindow];
}
有没有办法禁用这种“优化”?