我试图在 NSTimer 选择器中调用 [self setNeedsDisplay:YES] 以触发 drawRect 方法。
起初,我将 NSTimer 初始化代码放在一个按钮函数中:
-(IBAction)buttonPush:(id)sender
{
myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(myTimerAction:)
userInfo:nil
repeats:YES];
}
-(void)myTimerAction:(NSTimer *) timer
{
[self setNeedsDisplay:YES];
}
“setNeedsDisplay”被正常调用,但 drawRect 内的代码从未被调用:
- (void)drawRect:(NSRect)dirtyRect
{
NSLog(@"drawRect");
}
然后我尝试将 NSTimer 初始化代码移动到“- (id)initWithFrame:(NSRect)frame”,然后一切正常。(drawRect每1秒正确调用一次)。
上述两种方法有什么区别?如果我想在按钮中触发 Timer,我应该怎么做?