Objective c 单击按钮后暂停线程

Objective c 单击按钮后暂停线程,objective-c,ios,ios6,Objective C,Ios,Ios6,我有以下代码-它创建UIActivityIndicatorView,并在单击按钮时执行登录功能。在调用函数之前,我需要活动指示器显示一段时间,因此我会进行睡眠(10),但问题是按钮卡在按下状态(背景颜色从白色变为蓝色并冻结),并且活动指示器视图不会显示。当我不睡觉的时候,效果很好。在创建指示器和按钮返回正常状态后,如何暂停线程 -(IBAction)performLogin{ UIActivityIndicatorView *view = [[UIActivityIndicatorVie

我有以下代码-它创建UIActivityIndicatorView,并在单击按钮时执行登录功能。在调用函数之前,我需要活动指示器显示一段时间,因此我会进行睡眠(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"];
    }
}

将验证移动到单独的方法,并在延迟后调用它:

-(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"];
    }
}

您可以使用-(void)performSelectorInBackground:(SEL)带对象的选择器:(id)arg函数,希望对您有所帮助..[self-PerformSelectorWithIdentifier:@“goToMain”发送者:self];检查该行self未传入selfi,但转换仍在立即进行。即使我将afterDelay增加到1000000这样的大值。。。