2010-08-09 41 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;因为它不会在不喜欢voidIBAction返回任何方法需要(这是真的void,但让IB知道要注意它)。

0

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

+0

感谢您的解释! – Jason 2010-08-11 13:28:14

相关问题