2010-01-16 6 views
1

J'ai un problème étrange.J'ai deux UItextfields dans ma vue et un bouton.Lorsque je clique sur le bouton.J'ai changé le cadre de vue dans le bloc d'animation, mais il est démissionner plus tard ici est mon code si quelqu'un m'a dit à ce sujet « ll être reconnaissantsTextfield resignFirstResponder Très en retard?

-(IBAction)SignINClicked 
{ 
    [Email resignFirstResponder]; //TextField 
[Password resignFirstResponder];//TextField 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.10]; 
[[self view] setFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; 
[UIView commitAnimations]; 
sleep(0.10); 
if([Email.text isEqualToString:@""] || [Password.text isEqualToString:@""]) 
{ 
    if([Email.text isEqualToString:@""] && [Password.text isEqualToString:@""]) 
    { 
     UIAlertView *Error = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please fill email and password" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [Error show]; 
     [Error release]; 
    }  
    else if([Email.text isEqualToString:@""]) 
    { 
     UIAlertView *Error = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please fill email" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [Error show]; 
     [Error release]; 
    } 
    else if([Password.text isEqualToString:@""]) 
    { 
      UIAlertView *Error = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please fill password" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      [Error show]; 
      [Error release]; 
    } 
} 
else 
{ 
    [AppDelegate startLoading];  
    BOOL isCorrectUser=[self logIn:Email.text Password:Password.text]; 
    if (isCorrectUser==TRUE) 
    { 
     if(checkboxSelected==1) 
      [self rememberMe:YES]; 
     else 
      [self rememberMe:NO]; 
     [self performSelector:@selector(ShowDashboard) withObject:nil afterDelay:5]; 
    } 
    else 
    { 
     [AppDelegate endLoading]; 
     UIAlertView *Error = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Either user name/password is incorrect" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [Error show]; 
     [Error release]; 
    } 
} 

}

-(void)startLoading 
{ 
[UIApplication sharedApplication].networkActivityIndicatorVisible=YES; 
if(MyWaitViewObj==nil) 
{ 
    MyWaitViewObj = [[MyWaitViewController alloc] initWithNibName:@"MyWaitView" bundle:nil]; 
} 
[NSThread detachNewThreadSelector:@selector(showMyWaitView) toTarget:self withObject:nil]; 
[NSThread sleepForTimeInterval:0.1]; 
} 

-(void)endLoading 
{ 
[MyWaitViewObj.view removeFromSuperview]; 
[UIApplication sharedApplication].networkActivityIndicatorVisible=NO; 
} 

maintenant, quand je clique sur le bouton signin la méthode [appdelegate startloading] exécute d'abord, puis hides.While du clavier fait, il devrait cacher le clavier d'abord, puis commencer chargement

Répondre

2

Essayez de sortir la déclaration de sommeil. Si vous avez besoin de quelque chose après un délai, mettez-le dans sa propre méthode et appelez-le avec:

[self performSelector:@selector(someMethod:) withObject:nil afterDelay:someTimeDelay]; 
Questions connexes