drawRect メソッドをトリガーするために、NSTimer セレクターで [self setNeedsDisplay:YES] を呼び出そうとしました。
最初に、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 秒ごとに正しく呼び出されます)。
上記の2つの方法の違いは何ですか? ボタンでタイマーをトリガーしたい場合はどうすればよいですか?