2012-12-27 137 views
0

我有下面的代碼 - 它創建一個UIActivityIndi​​catorView,並在按鈕單擊時執行登錄功能。我需要活動指示器在函數被調用之前顯示一段時間,所以我確實睡眠(10),但問題在於按鈕處於按下狀態(背景顏色從白色變爲藍色並凍結)以及activityindicatorview不顯示。當我刪除睡眠(10)時,它工作正常。在創建指標並且按鈕回到正常狀態之後,我該如何暫停線程?點擊按鈕後暫停線程

-(IBAction)performLogin{ 
    UIActivityIndicatorView *view = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    [view setFrame:CGRectMake(180, 13, 10, 10)]; 
    [view startAnimating]; 
    [btnLogin addSubview:view]; 
    [sleep(10)];  
    if ([self validatePassword] == YES) 
    { 
     [self performSegueWithIdentifier:@"goToMain" sender:self]; 
    } 
    else 
    { 
     [ErrorHandler showMessage:@"Wrong password" :@"Authentication"]; 
    } 
} 
+0

你可以使用 - (空)performSelectorInBackground:(SEL)aSelector withObject:(ID)ARG功能,希望它有助於你.. –

+0

[self performSegueWithIdentifier:@「goToMain」sender:self];檢查這一行自我不通過自我 – NANNAV

回答

0

將您的驗證,以單獨的方法,和延遲後調用它:

-(IBAction)performLogin{ 
    UIActivityIndicatorView *view = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; 
    [view setFrame:CGRectMake(180, 13, 10, 10)]; 
    [view startAnimating]; 
    [btnLogin addSubview:view]; 
    [self performSelector:@selector(performPasswordValidation) withObject:nil afterDelay:10]; 
} 

- (void)performPasswordValidation 
{ 
    if ([self validatePassword] == YES) 
    { 
     [self performSegueWithIdentifier:@"goToMain" sender:self]; 
    } 
    else 
    { 
     [ErrorHandler showMessage:@"Wrong password" :@"Authentication"]; 
    } 
} 
+0

我做到了,但過渡仍在發生。即使當我在延遲之後增加一個像1000000這樣的大值時...... – pnduke