我正在使用所有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];
}
答案 0 :(得分:1)
您的回调可能不会在主线程中调用,ui更改调用仅适用于主线程。如果是这种情况,有一个nsobject的方法来在主线程中安排对选择器的调用,你可以从你的回调中调用它来操作ui
(抱歉不在我的工作电脑附近)