2011-04-26 47 views

回答

2

试试这个:

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

然后timer:应该是这样的:

- (void)timerFired:(NSTimer *)timer { 
     //do stuff here 
} 
10
- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay 

阅读了NSObject的文档上的其他几个变种。

[self performSelector:@selector(myFunction:) withObject:myObject afterDelay:10.0]; 
+1

这是一个很好的解决方案 – Nektarios 2011-04-26 16:49:20

0

你需要使用NSTimer

检查下面的代码作为参考。

- (void) startTimer{ 

    [NSTimer scheduledTimerWithInterval:10.0f target:self selector:@selector(showElapsedTime:) userInfo:nil repeats:YES]; 
} 

showElapsedTime将在延迟后被调用,您提供。

-(void) showElapsedTime: (NSTimer *) timer { 

    if(OnSomeCondition) 
    { 
     [timer invalidate]; 
    } 

// Write your code here 
} 

呼叫StartTimerUIButton操作方法,你会得到10秒的等待。

-(void) myButtonAction:(id) sender 
{ 
    [self StartTimer]; 
} 
-1

你可以做一个

sleep(10) 

,以使应用程序停顿10秒。注意:这是一个真正的,真正的暂停,所以根本不可能有UI交互。不过,按主屏幕按钮可以工作,并将您的应用程序移动到后台。

+0

大概没有做到这一点的最好办法。如果您确实想在暂停期间禁用用户交互,只需在我的回答中使用计时器,并在当前视图中执行'userInteractionEnabled = NO;'。但不要忘记重新启用后的互动。 – edc1591 2011-04-26 16:39:49

+6

请勿这样做 – Nektarios 2011-04-26 16:50:26

+0

如果您睡眠主线程并且用户按下Home或Sleep按钮,您的应用程序将不会响应通知,系统将终止它,从而无法保存用户的工作。 – 2011-04-26 17:23:02

1

您可以使用:

double delayInSeconds = 10.0; // number of seconds to wait 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    /*********************** 
    * Your code goes here * 
    ***********************/ 
}); 
相关问题