0

我的项目是 Mac OS X 的某种计时应用程序,我想让 TimeCircle 中的 drawRect 刷新 myView。我知道我之前问过类似的问题。但是我的问题还没有解决,它与其他类似的主题不同。

到目前为止我所拥有的:

  1. 一个 NSObject 类 TimeController,它启动一个计时器并以每秒为基础修改一些 NSTextEdits。

  2. 一个 NSView 类 TimeCircle,它连接到一个自定义视图,我想用一个像手一样的时钟画一个圆圈来表示进度。

  3. 在 TimeController.m 中导入 TimeCircle.h

  4. 一个实例方法drawRectOutsideWrapper,我在计时器运行时发送一条消息。[TimeCircle drawRectOutsideWrapper:(float) seconds]; 这行得通。

drawRectOutsideWrapper 是这样的:

- (void) drawRectOutsideWrapper:(float) seconds {
   liveAngle= seconds;
   [self->myTimeCircleView setNeedsDisplay:YES];
}

drawRectOutsideWrapper正确接收来自TimeController的消息!

问题是[self->myTimeCircleView setNeedsDisplay:YES]; 不会触发drawRect。它什么也不做。出于测试目的,我集成了一个滑块makeLiveLine,它实际上做同样的事情并且drawRect被正确触发:

- (IBAction)makeLiveLine:(id)sender {
   liveAngle= [sender intValue];
   [self->myTimeCircleView setNeedsDisplay:YES];
}

任何线索为什么一个人在做这项工作而一个人没有?

4

0 回答 0