2011-04-26 59 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 * 
    ***********************/ 
}); 
相關問題