Текстовое поле resignFirstResponder Очень поздно? - PullRequest
1 голос
/ 16 января 2010

У меня есть одна странная проблема. У меня есть два UItextfields в моем представлении и кнопка. Когда я нажимаю кнопку. Я изменил рамку представления в блоке анимации, но позже он отказывается, вот мой код, если кто-то сказал мне об этом я буду благодарен

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

Теперь, когда я нажимаю на кнопку входа, сначала выполняется метод [appdelegate startloading], а затем клавиатура прячется. Хотя на самом деле она должна сначала скрыть клавиатуру, а затем начать загрузку

1 Ответ

2 голосов
/ 16 января 2010

Попробуйте убрать утверждение сна. Если вам нужно, чтобы что-то произошло после задержки, поместите это в собственный метод и вызовите это с помощью:

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