Почему мой таймер работает на симуляторе iPad, а не на iPad? - PullRequest
1 голос
/ 22 декабря 2010

Я работаю со всем UIKit, и - в целях создания прототипов только что перенес всю логику в основной viewController.Я создаю некоторые UIViews в viewDidLoad, скрываю некоторые, и затем устанавливаю NStimer, чтобы показать скрытые в течение 4 секунд.Этот таймер прекрасно срабатывает в симуляторе, но никогда не срабатывает на iPad.Почему это могло произойти и что я должен даже искать?

Здесь я устанавливаю свой вид и таймер.

- (void)viewDidLoad {

[super viewDidLoad];

//snipped out long code that adds UIViews as subviews and runs fine
curtainView.hidden=YES;
questionLabel.hidden=YES;

[NSTimer scheduledTimerWithTimeInterval:4
                                 target:self
                               selector:@selector(dropCurtain:)
                               userInfo:nil
                                repeats:NO];

[NSTimer scheduledTimerWithTimeInterval:5
                                 target:self
                               selector:@selector(askQuestion:)
                               userInfo:nil
                                repeats:NO];

}

А вот функция, котораявызывается при включении первого таймера.Это не работает на iPad.

-(void)dropCurtain:(NSTimer *)timer{
curtainView.hidden=NO;
//curtainView.alpha=.5;
[self.view bringSubviewToFront:curtainView];
[self.view bringSubviewToFront:triesLabel];

}

1 Ответ

1 голос
/ 22 декабря 2010

Ваш обратный вызов может быть вызван не в основном потоке, пользовательский интерфейс изменяет вызов, работает только из основного потока. Если это так, то есть метод nsobject для планирования вызова селектора в главном потоке, и вы можете вызвать его из обратного вызова для манипулирования ui

(извините, не рядом с моим рабочим компьютером)

...