Я попытался вызвать [self setNeedsDisplay: YES] в селекторе NSTimer, чтобы вызвать метод drawRect.NSTimer не влияет ...?
Сначала я поставил код инициализации NSTimer в кнопку FUNC:
-(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 сек).
В чем разница между этими двумя способами выше? Что делать, если я хочу запустить таймер кнопкой?
Из описания все должно работать нормально. Нет никакой ошибки или чего-либо намека на то, что происходит не так. Ошибка в другом месте. Вы должны опубликовать больше контекста или кода. –
Я предполагаю, что вы не забыли подключить действие к своей кнопке? Попробуйте поместить инструкцию NSLog в свой метод '-buttonPush:' и посмотреть, выводится ли она. –