Cocoa touch 只有在处理完成后,才会发生辞职FirstResponder

Cocoa touch 只有在处理完成后,才会发生辞职FirstResponder,cocoa-touch,xcode,iphone-sdk-3.0,Cocoa Touch,Xcode,Iphone Sdk 3.0,我希望在我的iphone应用程序中点击“提交”时键盘立即消失,而不是等到功能完成。该函数需要很长时间,因为我正在执行同步HTTP请求 为什么视图直到整个函数完成才更新?我在xcode的模拟器里工作 -(IBAction)submit:(id)sender{ [myTitle resignFirstResponder]; ...some ASIHTTP setup... [request startSynchronous]; return; } 这是代码在线程中执

我希望在我的iphone应用程序中点击“提交”时键盘立即消失,而不是等到功能完成。该函数需要很长时间,因为我正在执行同步HTTP请求

为什么视图直到整个函数完成才更新?我在xcode的模拟器里工作

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

这是代码在线程中执行的方式。所有代码的“块”都会在辞职FirstResponder:“激活”(真正完成其执行)之前执行到底。因此,您可以延迟同步请求的启动,或者使其异步(因为您已经在使用ASITP,所以不太困难)。

如果要保持当前的同步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
iAction
的任何内容的方法中不需要它(这实际上是
void
,但让IB知道要注意它)