resignFirstResponder происходит только после завершения обработки - PullRequest
0 голосов
/ 10 августа 2010

Я хочу, чтобы клавиатура исчезла, как только я нажал «отправить» в своем приложении для iphone, и не ждал, пока функция не завершится.Функция занимает много времени, потому что я делаю синхронный HTTP-запрос.

Почему представление не обновляется, пока не завершится вся функция?Я работаю в симуляторе в xcode.

-(IBAction)submit:(id)sender{
    [myTitle resignFirstResponder];
    ...some ASIHTTP setup...
    [request startSynchronous];
    return;
}

Ответы [ 2 ]

1 голос
/ 10 августа 2010

Если вы хотите сохранить свой текущий синхронный HTTP-запрос, внесите следующие изменения:

-(IBAction)submit:(id)sender{
    [myTitle resignFirstResponder];
    [self performSelector:@selector(delayedSubmit:) withObject:sender afterDelay:0];
}
-(void)delayedSubmit:(id)sender {
    ...some ASIHTTP setup...
    [request startSynchronous];
    //return;
}

Я закомментировал return;, так как он не нужен в методах, которые не возвращают ничего вроде voidи IBAction (что на самом деле void, но позволяет IB знать об этом).

0 голосов
/ 10 августа 2010

это то, как код выполняется в потоках. Все «блоки» кода исполняются до конца перед тем, как что-то вроде resignFirstResponder: «активирует» (действительно завершает свое выполнение). Поэтому вы можете сделать что-то вроде задержки запуска вашего синхронного запроса или сделать его асинхронным (не слишком сложно, так как вы уже используете ASIHTTP).

...