resignFirstResponder仅在处理完成后发生

时间:2010-08-09 21:49:19

标签: cocoa-touch xcode iphone-sdk-3.0

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

为什么视图在整个功能完成之前不会更新?我在xcode的模拟器中工作。

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

2 个答案:

答案 0 :(得分: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;,因为在不返回voidIBAction之类的方法中不需要void(实际上是{{1}}但是让IB知道注意它。)

答案 1 :(得分:0)

它是如何在线程中执行代码的。代码的“块”全部在resignFirstResponder之前执行到最后:“激活”(真正完成其执行)。因此,您可以执行某些操作,例如延迟启动同步请求,或使其成为异步(因为您已经使用ASIHTTP,因此不太困难)。