为什么我的计时器可以在iPad模拟器上运行而不能在iPad上运行?

时间:2010-12-22 16:12:17

标签: ipad ios nstimer simulator

我正在使用所有UIKit,并且 - 为了进行原型设计,只需将所有逻辑推入主viewController。我在viewDidLoad中创建了一些UIViews,隐藏了一些,然后设置一个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 个答案:

答案 0 :(得分:1)

您的回调可能不会在主线程中调用,ui更改调用仅适用于主线程。如果是这种情况,有一个nsobject的方法来在主线程中安排对选择器的调用,你可以从你的回调中调用它来操作ui

(抱歉不在我的工作电脑附近)