setNeedsDisplay不会导致刷新drawRect

时间:2012-11-20 07:59:24

标签: objective-c nsview drawrect

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

到目前为止我所拥有的:

  1. 一个NSObject类TimeController,用于启动计时器并在每秒基础上修改一些NSTextEdits。

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

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

  4. 实例方法 drawRectOutsideWrapper ,我在计时器运行时发送消息。 [TimeCircle drawRectOutsideWrapper:(float)seconds];这很有效。

  5. 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];
    }
    

    为什么一个人正在做这个工作而另一个没有的线索呢?

0 个答案:

没有答案