2010-08-09 9 views
0

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

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

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

ответ

1

Если вы хотите сохранить ваш текущий запрос синхронной 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

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

+0

Спасибо за объяснение! – Jason

Смежные вопросы